Django,在将HTML放到模板时自动HTML"清理",如何阻止它?

Ric*_*ick 4 html python django templates html-sanitizing

我有点困惑,因为看起来Django模板有可选的HTML过滤器,但这似乎是自动发生..我正在制作这个演示应用程序,用户将执行一个调用python脚本检索URL的动作,然后我想在一个新窗口中显示它...它很好,除了当显示器返回时,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
Run Code Online (Sandbox Code Playgroud)

这是相同的常规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-
Run Code Online (Sandbox Code Playgroud)

我只是将它输出到我的html模板中的基本块,模板没有其他格式(没有HTML等),只有1个块,这个输出去..任何关于为什么会发生这种情况的建议以及如何显示常规非常感谢HTML(因此它会在浏览器中显示页面而不是HTML文本).谢谢

Ned*_*der 8

使用安全过滤器:

{{ myvariable|safe }}
Run Code Online (Sandbox Code Playgroud)

如果你需要像这样处理模板的大部分(也就是说,如果你发现自己|safe一遍又一遍地使用),你可以禁用autoescaping整个销售:

{% autoescape off %}
blah {{myvariable}} blah {{myothervariable}}
{% endautoescape %}
Run Code Online (Sandbox Code Playgroud)


Fai*_*sal 5

看一下"安全"过滤器,它会禁用Django的默认转义:

http://docs.djangoproject.com/en/1.2/ref/templates/builtins/#safe