Django中的文字HTML没有使用变量?

时间:2011-02-18 14:59:30

标签: html django literals

我有一堆HTML:

<div align="center" id="whatever">
<a href="http://www.whatever.com" style="text-decoration:none;color:black">
<img src="http://www.whatever.com/images/whatever.jpg" />
</a></div>

我想在浏览器中将其全部输出为文字HTML,即将上述内容显示给用户。 (编辑:遗憾的是我在我的模板中无法访问Django变量,因为我正在研究的系统怪癖,所以我无法使用{{ | escape }}

有没有办法做到这一点,使用Django模板标签或特殊的HTML标签,而不必手动HTML全部转义?

谢谢!

4 个答案:

答案 0 :(得分:3)

如果HTML必须包含在模板本身中,您可以使用filter块:

{% filter force_escape %}
    <div align="center" id="whatever">
    <a href="http://www.whatever.com" style="text-decoration:none;color:black">
    <img src="http://www.whatever.com/images/whatever.jpg" />
    </a></div>
{% endfilter %}

Documentation

答案 1 :(得分:1)

是的,只需使用escape过滤器:

{{my_html|escape}}

修改force_escape

{% filter force_escape %}
   ... your HTML to be escaped ...
{% endfilter %}

或者,来自Python:

from django.utils.html import escape
escaped_html = escape(html_to_escape)

答案 2 :(得分:1)

如果您不想在模板中执行此操作,您可以随时自行逃避它并且它不会被转义(让我们只说模板作者使用{{ var|safe }}

from django.utils.html import escape

escaped_html = escape(my_html)

答案 3 :(得分:0)

Django在插入时默认为auto-escape个上下文变量(另请参阅documentation)。因此,除非您将变量标记为安全,或使用autoescape off模板标记,否则只需使用{{ contextVariable }}