GAE のテンプレートで Unicode 文字列を URLencode する。

シェアする

GoogleAppEngine でページ作ってるときに、文字列を URLencode で表示したい場所があったので、Django のテンプレートのドキュメント通りに {{ hoge|urlencode }} と記述したのだが


KeyError: u'\u614c'

などとエラーを出して終了してしまう。

どうすりゃいいんだ?と思って調べてみるとどうやらカスタムフィルターを作れば良いらしい。

というわけで以下のエントリーを参考に(コピーして)解決しました。thank you.

以下手順和訳

1) GAEアプリケーションのディレクトリ直下に customtags という名前でディレクトリを作成

2) customtags の中に __init__.py 及び xss.py の2ファイルを作成する。 __init__.py は編集しないけど空のファイルのまま放置でおk。

3) xss.py を以下の様に編集。

import types
import urllib
from django import template

register = template.Library()

@register.filter
def unicode_urlencode(value):
	if type(value) is types.UnicodeType:
		return urllib.quote(value.encode("utf-8"))
	else:
		return urllib.quote(value)

4) GAE のスクリプトの上部 import の下へ以下のコードを追加。

webapp.template.register_template_library("customtags.xss")

これで準備完了。

あとはテンプレートで urlencode したい箇所を

{{ hoge|unicode_urlencode }}

と記述すればおk

何か勘違いしているような気もするがとりあえずメモ

Sponsored Link

シェアする

フォローする