没有 HTML 转义的 Django 表单值

2024-02-12

我需要设置 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>

Update:请注意我使用姜戈 0.96因为我的应用程序正在 Google App Engine 上运行。
还有上面是使用 Django Forms 呈现的。

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

Thanks,
Arun.


您可以使用 ”safe http://docs.djangoproject.com/en/dev/topics/templates/#how-to-turn-it-off“在模板中或”标记安全 http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#filters-and-auto-escaping” 看来, 关闭模板中的自动转义, 或者在表单中使用 Unicode 字符而不是 HTML 实体。

Using 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;')))    

Using autoescape off

作为模板中的替代方案,您可以关闭代码块的转义 http://docs.djangoproject.com/en/dev/topics/templates/#for-template-blocks。 标签之间的所有内容{% autoescape off %} and {% endautoescape %}不会被逃脱。

使用 Unicode 字符

当其他方法都不起作用时,请尝试以下操作。在包含货币元组的文件中,将以下行作为第一行或第二行:

# coding=utf-8

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

currencies = (('$', '$'), 
              ('£', '£'), 
              ('€', '€')) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有 HTML 转义的 Django 表单值 的相关文章

随机推荐