Django表单值没有HTML转义

asp*_*asp 4 python symbols currency django-forms

我需要设置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>
Run Code Online (Sandbox Code Playgroud)

您是否可以建议任何方法来显示实际的HTML货币字符,至少是该选项的值部分?

<select name="currency" id="id_currency">
    <option value="&amp;#36;">$</option>
    <option value="&amp;pound;">£</option>
    <option value="&amp;euro;">€</option>
</select>
Run Code Online (Sandbox Code Playgroud)

更新: 请注意我使用Django 0.96,因为我的应用程序在Google App Engine上运行.上面
<SELECT>使用Django Forms呈现.

currencies = (('&#36;', '&#36;'), 
              ('&pound;', '&pound;'), 
              ('&euro;', '&euro;'))    
currency = forms.ChoiceField(choices=currencies, required=False)
Run Code Online (Sandbox Code Playgroud)

谢谢,
阿伦.

Ser*_*nko 9

您可以在模板中使用" 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;')))    
Run Code Online (Sandbox Code Playgroud)

运用 autoescape off

作为模板的替代方案,您可以关闭代码块的转义.标签之间的一切{% autoescape off %},并{% endautoescape %} 不会逃脱.

使用Unicode字符

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

# coding=utf-8
Run Code Online (Sandbox Code Playgroud)

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

currencies = (('$', '$'), 
              ('£', '£'), 
              ('€', '€')) 
Run Code Online (Sandbox Code Playgroud)