django模板中的转义问题

时间:2009-05-15 22:43:46

标签: python html django django-templates rendering

假设我有这个字符串:

s = '<p>Hello!</p>'

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

{{s|safe}}

或禁用autoescape:

{%autoescape off}
{{s}}
{%endautoescape%}

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

from django.utils.safestring import mark_safe
s = mark_safe(s)

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

<p>Hello!</p>

我一定是在遗漏一些东西,只是弄不清楚是什么。是否存在一些不允许逃避的安全设置?

编辑:奇怪,重新启动电脑后问题似乎消失了。

3 个答案:

答案 0 :(得分:6)

我认为你应该写如下

{{s|escape|safe}}

对我来说没关系

答案 1 :(得分:2)

你几乎已经覆盖了它,这些确实是禁用自动转换的所有方法。

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

我的预感是你在那个字符串的某个地方有额外的逃避......

答案 2 :(得分:-4)

看看HTML源代码,它是否被转义!???我不这么认为。它应该是逐个字母打印,就像这样:

<
p
>
H
E
L
L
O
<
/
>