Django 的模板变量被解释为 HTML

Posted

技术标签:

【中文标题】Django 的模板变量被解释为 HTML【英文标题】:Django's template variable gets interpreted as HTML 【发布时间】:2013-08-13 01:46:32 【问题描述】:

DEBUG=True 包含html 的变量只是打印在模板中并且 插入为HTML。这是正确的行为。

另一方面,当DEBUG=False(只是改变这个)变量的内容被解释为HTML,我不明白为什么。我没有使用safe 过滤器。

我的模板如下:

  <pre id="copy-source- forloop.counter ">
    <code> code </code>
  </pre>

在一种情况下,code 恰好是 HTML 代码,具体来说:

<a href="blabla"><img src="bblabla" /></a>

页面显示图像而不是代码,即使它在预代码中!?

【问题讨论】:

你用的是什么 django 版本? @alecxe: 1.5.1,抱歉没有包括在内。 @alecxe:更新了问题。谢谢 【参考方案1】:

试试这个

% autoescape off %
    var_containing_html
% endautoescape %

我希望这会有所帮助。 祝你好运。

附:另见docs

【讨论】:

我认为它有效,但事实并非如此。我会用更多细节更新问题。 更新了问题。谢谢 你试过 % autoescape on % 吗?然后&amp;lt;&amp;gt;符号将被转义,看起来像&amp;lt;&amp;gt;,不会被浏览器解释为html,所以用户可以看到代码。 是的,但令人惊讶的是它不起作用。我仍然看到图像。相反,如果我关闭DEBUG,我会看到代码!我在这里变得疯狂......

以上是关于Django 的模板变量被解释为 HTML的主要内容,如果未能解决你的问题,请参考以下文章

08-Django模板

Django 模板

如何将带有上下文变量的 Django 模板发送到 Ajax 调用?

Django学习模板定制

模板的 Django 上下文变量名称

Django:如何在模板中获取语言代码?