開発したアプリなど一覧

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

記事内にアフィリエイトリンクを含む場合があります

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


KeyError: u'\u614c'

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

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

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

random thoughts...: Django template urlencode unicode characters (Google App Engine)

以下手順和訳

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

コメント

タイトルとURLをコピーしました