2012-04-02 71 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