我需要设置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;">€</option>
</select>


更新:
请注意,由于我的应用程序正在Google App Engine上运行,因此我使用Django 0.96。
上面的是使用Django Forms呈现的。

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


谢谢,
阿伦

最佳答案

您可以在模板中使用“ safe”或在视图中使用“ mark_safe”,
关闭模板中的自动转义,
或在表单中使用Unicode字符而不是HTML实体。

使用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

作为模板的替代方案,您可以turn off escaping for a block of code
标签{% autoescape off %}{% endautoescape %}之间的所有内容
不会逃脱。

使用Unicode字符

如果没有其他效果,请尝试以下方法。在包含您的货币元组的文件中,将以下行作为第一行或第二行:

# coding=utf-8


然后在您的货币元组中放入实际的unicode字符:

currencies = (('$', '$'),
              ('£', '£'),
              ('€', '€'))

09-10 01:33
查看更多