2012-01-21 40 views
-1

非常に一般的な操作ここではDjangoのテンプレートやUnicode値についての基本的な質問ですね。
よく使用されるケースは、djangoテンプレートに渡されるUnicode値ですが、これらの値は出力できません。フォームをジャンゴするDjangoのテンプレート:UTF-8にUnicodeを変換する - ビルトインされていない

ユーザの入力値は、Unicodeとしてエンコードされている: https://docs.djangoproject.com/en/dev/ref/unicode/#form-submission

したがって、ビューは、一般に、Unicode値で動作します。 これらの値を出力するときは、utf-8としてエンコードする必要があります。 私はdjangoテンプレートでそのエンコーディングをしたいと思いますが、そのための組み込みのフィルターはないようです。例:この投稿では、カスタムフィルタの作成について説明しています。 http://seewah.blogspot.com/2009/11/django-template-urlencode-unicode.html

jinja2でもこのタイプのフィルタが組み込まれていません。

私はテンプレートにオブジェクトを渡すと、そのオブジェクト内の様々な構造にアクセスすることができますが、私は、UTF-8文字列にこれらの構造でUnicode文字列を変換することはできませんので、そう、それはその有用ではないのです!

ここに何か不足していますか?


アップデート(1時間後):

{% for an_obj in list_of_obj %} 

<li><a href="/my_url/?send_string={{an_obj.a_unicode_field | urlencode}}">{{an_obj.a_unicode_field}}</a></li> 

{% endfor %} 

:私はのようなものを持っているDjangoテンプレートで

は私がより明確にするためにここにいくつかの擬似コードを入れてみましょうしかし、これは、a_unicode_fieldがユニコード値のときには失敗します。私がしたいのは:

<li><a href="/my_url/?send_string={{an_obj.a_unicode_field | encode: "utf-8" | urlencode}}">{{an_obj.a_unicode_field | encode: "utf-8"}}</a></li> 

しかし、組み込みの "エンコード"フィルターはありません。そして、それは非常に一般的な操作です:私は、すべてのテンプレート内のすべての文字列のI出力のために、このUTF-8エンコーディングを行う必要があります...

+0

テンプレートを書くときに、自動的にUTF-8にシリアライズ値ではありませんか? Djangoのドキュメントで[Unicode data](https://docs.djangoproject.com/en/dev/ref/unicode/)を見てください。 –

答えて

1

それはUnicode値がテンプレートでプリントアウトすることができないと言うために完全にナンセンスです。私はあなたが何を考えているか分かりません。特別

何もUTF-8としてエンコードするために行われる必要がありません。これがデフォルトです。あなたが何か違う何かを見ているなら、あなたはどこかで何かを間違って構成しました。

編集更新後いいえ、まだ問題を理解していません。最初の例はうまくいきます。特にutf-8にエンコードする必要はありません。それがユニコードのときあなたのためにどのように "失敗"しますか? (そして、あなたは「それはUnicode値だとき」ジャンゴからテンプレートに渡されたすべての値はユニコードあるとはどういう意味ですか?。)

+0

これはOPが持っているのと同じ問題があるのか​​どうか分かりませんが、私の問題はテンプレートのオブジェクトからフィールドを出力するときです。 {{page.title}}私は文字列ieに接頭辞uで終わる。 (u'Respage Test '、) – thefreeman

+2

これは、ユニコードとは関係ありません。これは、単独の文字列ではなく、単一の文字列を含むタプルを渡したためです。 –

+0

ありがとう、私は私のコメントを削除するためにここに戻ってきた:)私は、行の終わりにpage.titleに値を割り当てる迷い "、"があった。これは文字列から1の値のタプルに変更されました。おっとっと! – thefreeman

2

あなたが表示された場合:

[u'keyword ']例えば、書き込み用テンプレートに:{{test.info}}あなたが使用することができます

:キーワード:{{test.info.0}}視覚化のために。

これは必要なのですか?

よろしく マッシモ

関連する問題