4

通貨記号を表示するには、Django forms.ChoiceField を設定する必要があります。django フォームはすべての HTML ASCII 文字をエスケープするため、 $ を取得できません。( ) または & ポンド; ( £ ) で通貨記号を表示します。

<select id="id_currency" name="currency">
    <option value="&amp;#36;">&#36;</option>
    <option value="&amp;pound;">&pound;</option>
    <option value="&amp;euro;">&euro;</option>
</select>

少なくともオプションの値の部分について、実際の HTML 通貨文字を表示する方法を提案できますか?

<select name="currency" id="id_currency">
    <option value="&amp;#36;">$</option>
    <option value="&amp;pound;">£</option>
    <option value="&amp;euro;">€&lt;/option>
</select>

更新:私のアプリケーションは Google App Engine で実行されているため、Django 0.96 を使用していることに注意してください。
上記の<SELECT>は、Django Forms を使用してレンダリングされます。

currencies = (('&#36;', '&#36;'), 
              ('&pound;', '&pound;'), 
              ('&euro;', '&euro;'))    
currency = forms.ChoiceField(choices=currencies, required=False)

ありがとう、
アルン。

4

1 に答える 1

9

テンプレートで「safe 」またはビューで「 mark_safe」を使用したり、テンプレートで自動エスケープをオフにしたり、フォームで HTML エンティティの代わりに Unicode 文字を使用したりできます。

使用するmark_safe

from django.utils.safestring import mark_safe

currencies = ((mark_safe('&#36;'), mark_safe('&#36;')), 
              (mark_safe('&pound;'), mark_safe('&pound;')), 
              (mark_safe('&euro;'), mark_safe('&euro;')))    

使用するautoescape off

テンプレートの代わりに、コード ブロックのエスケープを無効にすることができます。{% autoescape off %}タグとタグの間のすべては{% endautoescape %} エスケープされません。

Unicode 文字の使用

他に何も機能しない場合は、次のことを試してください。通貨のタプルを含むファイルで、次の行を 1 行目または 2 行目に配置します。

# coding=utf-8

次に、通貨のタプルに実際の Unicode 文字を入れます。

currencies = (('$', '$'), 
              ('£', '£'), 
              ('€', '€')) 
于 2009-04-22T14:36:34.633 に答える