Django 奇怪地解释了安全过滤器
Posted
技术标签:
【中文标题】Django 奇怪地解释了安全过滤器【英文标题】:Django interprets safe filter weirdly 【发布时间】: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 为什么它将我在模板代码中提供的内容呈现给第一个结果代码?如果你想实现,你可以使用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
【讨论】:
以上是关于Django 奇怪地解释了安全过滤器的主要内容,如果未能解决你的问题,请参考以下文章
django:使用没有 unicode 'u' 类型指示符的安全过滤器渲染变量
在 Django 中,如何优雅地将查询集过滤器添加到大型组或对象的所有成员?