【问题标题】:Django interprets safe filter weirdlyDjango 奇怪地解释了安全过滤器
【发布时间】:2022-01-06 10:53:49
【问题描述】:

我们有一个 django 模板,但是我对富文本数据有一个奇怪的问题。

例子:

模板:<p class="correctClass">{{team.description|safe}}</p>

我们 CMS 中 team.description 的源代码:<p>Correct text</p>

结果:

<p class="correctClass"></p>
<p>Correct text</p>
<p></p>

没有安全过滤器是这样的:

<p class="correctClass">
    <p>Correct text</p> (this line is text, not parsed as html)
</p>

当然想要的输出是:

<p class="correctClass">Correct text</p>

【问题讨论】:

  • 试着让外面的一个 div ......也许你不能嵌套

    (只是一个猜测)

  • 这有什么奇怪的?你传入一个包含 HTML 的字符串,向 Django 指定它是安全的。当然 Django 会这样渲染它。是否要删除该字符串中的所有 HTML 标记?
  • @AbdulAzizBarkat 为什么它将我在模板代码中提供的内容呈现给第一个结果代码? {{child|safe}} 呈现 (childContentGoesHere)。这有什么意义? :o
  • @JoranBeasley Lol 成功了,但为什么呢?
  • 这能回答你的问题吗? HTML tags inside paragraph <p>

标签: python django django-templates


【解决方案1】:

如果你想实现,你可以使用striptags。

<p class="correctClass">{{team.description|striptags}}</p>

"请注意,striptags 并不能保证其输出是 HTML 安全的,尤其是对于无效的 HTML 输入。因此,切勿将安全过滤器应用于 striptags 输出。如果您正在寻找更强大的东西,您可以使用漂白 Python 库,尤其是它的 clean 方法。”来自官方文档
更多信息请参考https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#striptags

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 2013-04-14
    • 2014-07-03
    • 2019-08-16
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2015-04-07
    相关资源
    最近更新 更多