Django,如何阻止模板中自动“清理”HTML?
我有点困惑,因为看起来Django模板有一些可选的HTML过滤器,但这似乎是自动发生的。我正在制作一个演示应用,用户会执行一个操作,这个操作会调用一个Python脚本来获取一个网址,然后我想在新窗口中显示这个网址。一切都很好,除了当显示结果回来时,HTML被处理成了这种格式(我在查看页面源代码时看到的,在浏览器中显示的是普通的HTML):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[
si_ST=new Date
这是相同内容的普通HTML版本:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><meta content="text/html; charset=utf-8" http-equiv="content-type" /><script type="text/javascript">//<![CDATA[ si_ST=new Date //]]></script><script type="text/javascript">//<![CDATA[ _G={ST:(si_ST?si_ST:new Date),Mkt:"en-
我只是把这个输出放在我的HTML模板中的一个基本块里,模板没有其他格式(没有HTML等),只有一个块用来放这个输出。对于为什么会这样发生,以及如何显示普通HTML(这样在浏览器中就能显示页面,而不是HTML文本),任何建议都很感激。谢谢!
3 个回答
2
还有一个叫做 autoescape 的功能,它可以控制整个代码块的转义处理。
5
看看这个“safe”过滤器,它会关闭Django默认的转义功能:
http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#safe
10
使用安全过滤器:
{{ myvariable|safe }}
如果你需要在模板中大部分内容都这样处理(也就是说,如果你发现自己一直在使用|safe
),你可以完全关闭自动转义:
{% autoescape off %}
blah {{myvariable}} blah {{myothervariable}}
{% endautoescape %}