2012-04-02 87 views
0

a ='abc'python - 在Django模板中使用unescape

Html特殊字符在显示文章时显示。

> {{ a | escape }} 

'abc' 

当我表明我想unescape。

> {{ a | escape | safe }} 

TemplateSyntaxError: Invalid filter: 'safe' 

发生错误。

> from django.utils.safestring import mark_safe 

> a = mark_safe(a) 

也会发生此错误。

Django不会使当前不适用于安全吗?

你有什么想法如何unescape?

(我正在在谷歌-的AppEngine开发的。)

+1

后满引用 – jpic 2012-04-02 08:13:11

回答

2

这不是完全清楚你问什么,而是你可以禁用Django的自动与autoescape template tag逃逸。例如:

>>> from django.template import Template, Context 
>>> c = Context(dict(a = '<a href="#fragment">Link</a>')) 
>>> Template("{{ a }}").render(c) 
u'&lt;a href=&quot;#fragment&quot;&gt;Link&lt;/a&gt;' 
>>> Template("{% autoescape off %}{{ a }}{% endautoescape %}").render(c) 
u'<a href="#fragment">Link</a>' 

mark_safe也可以工作:

>>> from django.utils.safestring import mark_safe 
>>> Template("{{ a }}").render(Context(dict(a = mark_safe(a)))) 
u'<a href="#fragment">Link</a>' 
+0

谢谢。 也许我在Django 0.96版本,使用似乎是没有。 – user1117294 2012-04-03 06:38:38

+1

如果您要在App Engine上使用'mark_safe',请确保您导入'google.appengine._internal.django.utils.safestring',否则无法使用。 – 2012-04-14 06:47:40