4

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

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

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

谢谢,
阿伦。

4

1 回答 1

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

使用autoescape off

作为模板中的替代方案,您可以关闭代码块的转义。标签之间的所有{% autoescape off %}内容{% endautoescape %} 都不会被转义。

使用 Unicode 字符

当没有其他工作时,请尝试以下操作。在包含您的货币元组的文件中,将以下行作为第一行或第二行:

# coding=utf-8

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

currencies = (('$', '$'), 
              ('£', '£'), 
              ('€', '€')) 
于 2009-04-22T14:36:34.633 回答