我需要设置 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>
更新:
请注意,我使用 Django 0.96,因为我的应用程序在 Google App Engine 上运行。
上面的 是使用 Django Forms 呈现的。
currencies = (('$', '$'),
('£', '£'),
('€', '€'))
currency = forms.ChoiceField(choices=currencies, required=False)
谢谢,
阿伦。
最佳答案
您可以在模板中使用“safe ”或在 View 中使用“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('€')))
使用关闭自动转义
作为模板中的替代方案,您可以 turn off escaping for a block of code 。
标签 {% autoescape off %}
和 {% endautoescape %}
之间的所有内容
不会被逃脱。
使用 Unicode 字符
如果其他方法都不起作用,请尝试以下操作。在包含货币元组的文件中,将以下行作为第一行或第二行:
# coding=utf-8
然后在您的货币元组中放入实际的 unicode 字符:
currencies = (('$', '$'),
('£', '£'),
('€', '€'))
关于python - 没有 HTML 转义的 Django 表单值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/777458/