代码之家  ›  专栏  ›  技术社区  ›  asp

不带HTML转义符的Django表单值

  •  3
  • asp  · 技术社区  · 17 年前

    我需要设置django Forms.choiceField以显示货币符号。由于django表单转义了所有HTML ASCII字符,因此我无法获取&36;。( 欧元 )或英镑( 英镑 )显示货币符号。

    <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应用程序引擎上运行。
    以及 <选择& 上面是使用django格式呈现的。

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

    谢谢,
    Arun。

    1 回复  |  直到 9 年前
        1
  •  8
  •   Lutz Prechelt    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

    作为模板中的备选方案,您可以 turn off escaping for a block of code . 标签之间的所有内容 {% autoescape off %} {% endautoescape %} 不会逃跑。

    使用Unicode字符

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

    # coding=utf-8
    

    然后在货币元组中输入实际的Unicode字符:

    currencies = (('$', '$'), 
                  ('£', '£'), 
                  ('€', '€'))