【问题标题】:How do I inject actual html from the model to the template?如何将模型中的实际 html 注入到模板中?
【发布时间】:2010-12-05 09:50:02
【问题描述】:

在我的管理员中,我有一个文本区域,用户可以在其中输入 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?

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    您需要“安全”过滤器。因为它是自动转义的。

    {{ my_html|safe }}
    

    【讨论】:

      【解决方案2】:

      查看模板标签文档here,查看autoescape标签说明。

      【讨论】:

        【解决方案3】:

        “文本区域”是指&lt;textarea&gt;吗?

        因为如果是这样,将&amp;lt; 转义为&amp;lt;(等)是您必须在文本区域或任何其他 HTML 元素中执行的操作:Django 正在做正确的事情。您会在页面上看到正确的解码版本;谁在乎源的样子?

        如果您不转义文本区域的内容,您不仅会生成无效的 HTML,还会在用户输入的地方受到攻击:

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

        【讨论】:

          猜你喜欢
          • 2020-02-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-26
          • 2012-01-26
          • 1970-01-01
          • 2021-11-03
          • 1970-01-01
          相关资源
          最近更新 更多