我需要设置Django Forms.ChoiceField来显示货币符号。由于django表单会转义所有HTML ASCII字符,因此我无法使用$(€)或£(£)来显示货币符号。
<select id="id_currency" name="currency">
<option value="&#36;">$</option>
<option value="&pound;">£</option>
<option value="&euro;">€</option>
</select>
您能否建议至少显示该选项的值部分的实际HTML货币字符的任何方法?
<select name="currency" id="id_currency">
<option value="&#36;">$</option>
<option value="&pound;">£</option>
<option value="&euro;">€</option>
</select>
更新:
请注意,由于我的应用程序正在Google App Engine上运行,因此我使用Django 0.96。
上面的是使用Django Forms呈现的。
currencies = (('$', '$'),
('£', '£'),
('€', '€'))
currency = forms.ChoiceField(choices=currencies, required=False)
谢谢,
阿伦
最佳答案
您可以在模板中使用“ safe”或在视图中使用“ mark_safe”,
关闭模板中的自动转义,
或在表单中使用Unicode字符而不是HTML实体。
使用mark_safe
from django.utils.safestring import mark_safe
currencies = ((mark_safe('$'), mark_safe('$')),
(mark_safe('£'), mark_safe('£')),
(mark_safe('€'), mark_safe('€')))
使用
autoescape off
作为模板的替代方案,您可以turn off escaping for a block of code。
标签
{% autoescape off %}
和{% endautoescape %}
之间的所有内容不会逃脱。
使用Unicode字符
如果没有其他效果,请尝试以下方法。在包含您的货币元组的文件中,将以下行作为第一行或第二行:
# coding=utf-8
然后在您的货币元组中放入实际的unicode字符:
currencies = (('$', '$'),
('£', '£'),
('€', '€'))