【问题标题】:Django Form values without HTML escape没有 HTML 转义的 Django 表单值
【发布时间】:2010-10-21 02:50:44
【问题描述】:

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

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

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

谢谢,
阿伦。

【问题讨论】:

  • 您是使用自定义模板还是使用 django-admin?
  • 我正在使用自定义模板。
  • 其他方式是使用unicode u'\u20AC'

标签: python django-forms currency symbols


【解决方案1】:

您可以在模板中使用“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 = (('$', '$'), 
              ('£', '£'), 
              ('€', '€')) 

【讨论】:

  • 您好,感谢您的快速回复。但我不知道如何在 django Forms 的情况下应用这两种方法。补充:我应该提到我使用 Django 0.96,因为我的应用程序在 Google 的 App Engine 上运行。
  • 您好,再次感谢您的回复。我使用 Django 0.96,因为我的应用程序在 Google 的 App Engine 上运行。据我了解 django.utils.safestring 是在 0.96 之后引入的
  • 嗨,谢谢。但同样的问题是我使用的 Django 版本是 0.96。我认为只有 Django 1.0 有“autoescape”标签。像这样的时候,我希望我有 Django 1.0。但是现在更改版本将是一个非常大的开销,因为我在 Google App Engine 中。
猜你喜欢
  • 2017-01-04
  • 2014-05-11
  • 2014-03-05
  • 1970-01-01
  • 2021-10-18
  • 2020-05-12
  • 1970-01-01
  • 2012-08-23
  • 1970-01-01
相关资源
最近更新 更多