在我的管理员中,我有一个文本区域,用户可以在其中输入html:
<ul>
<li>blah</li>
</ul>
<p>
Stuffs
</p>
当我将上面的内容推送到我的模板并查看页面的来源时,我得到:
<ul>
<li>blah</li>
</ul>
<p>
Stuffs
</p>
我应该如何处理输出,以便在页面源中看到实际的html?
答案 0 :(得分:6)
您需要'安全'过滤器。因为它是自动调整的。
{{ my_html|safe }}
答案 1 :(得分:0)
请参阅模板标签文档here,查看autoescape
代码说明。
答案 2 :(得分:0)
“文字区域”是指<textarea>
?
因为如果是这样的话,将<
转发到<
(等)就是你必须在textarea或任何其他HTML元素中做的事情:Django正在做正确的事情。您在页面上看到正确的解码版本的文本;谁在乎源头是什么样的?
如果您没有转义textarea的内容,那么您不仅会生成无效的HTML,而且还会打开用户输入的攻击:
</textarea>
<script>
steal(document.cookie);
location.href= 'russian malware site';
// etc.
</script>