django模板中的转义问题

sha*_*nyu 9 html python django rendering django-templates

假设我有这个字符串:

s = '<p>Hello!</p>'
Run Code Online (Sandbox Code Playgroud)

当我将此变量传递给模板时,我希望它呈现为原始html.查看文档,我看到我可以使用安全过滤器:

{{s|safe}}
Run Code Online (Sandbox Code Playgroud)

或禁用autoescape:

{%autoescape off}
{{s}}
{%endautoescape%}
Run Code Online (Sandbox Code Playgroud)

或者在python代码中声明它是安全的:

from django.utils.safestring import mark_safe
s = mark_safe(s)
Run Code Online (Sandbox Code Playgroud)

这些选项都不适用于我.无论我做什么,字符串显示为:

<p>Hello!</p>
Run Code Online (Sandbox Code Playgroud)

我一定是错过了什么,只是弄不清楚是什么.是否存在某些不允许逃避的安全设置?

编辑:奇怪,我重新启动计算机后问题似乎消失了.

小智 6

我想你应该写如下

{{s|escape|safe}}
Run Code Online (Sandbox Code Playgroud)

对我来说没关系


Yuv*_*dam 2

您几乎涵盖了它,这些确实是禁用自动转义的所有方法。

您确定您所说的值实际上是吗s = '<p>Hello!</p>'

我的预感是你在该字符串的某个地方有额外的转义......