我有一堆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全部转义?
谢谢!
答案 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 %}
答案 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 }}
。