如何将模型中的实际html注入模板?

时间:2009-10-09 16:14:50

标签: django django-templates

在我的管理员中,我有一个文本区域,用户可以在其中输入html:

<ul>
  <li>blah</li>
</ul>
<p>
  Stuffs
</p>

当我将上面的内容推送到我的模板并查看页面的来源时,我得到:

&lt;ul&gt;
  &lt;li&gt;blah&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  Stuffs
&lt;/p&gt;

我应该如何处理输出,以便在页面源中看到实际的html?

3 个答案:

答案 0 :(得分:6)

您需要'安全'过滤器。因为它是自动调整的。

{{ my_html|safe }}

答案 1 :(得分:0)

请参阅模板标签文档here,查看autoescape代码说明。

答案 2 :(得分:0)

“文字区域”是指<textarea>

因为如果是这样的话,将<转发到&lt;(等)就是你必须在textarea或任何其他HTML元素中做的事情:Django正在做正确的事情。您在页面上看到正确的解码版本的文本;谁在乎源头是什么样的?

如果您没有转义textarea的内容,那么您不仅会生成无效的HTML,而且还会打开用户输入的攻击:

</textarea>
<script>
    steal(document.cookie);
    location.href= 'russian malware site';
    // etc.
</script>