2012-04-02 6 views
0

a = 'abc'Python - djangoテンプレートのアンエスケープ

Htmlの特殊文字が記事のときに表示されます。

> {{ a | escape }} 

'abc' 

私がエスケープしたいことを示すとき。

> {{ a | escape | safe }} 

TemplateSyntaxError: Invalid filter: 'safe' 

エラーが発生します。

> from django.utils.safestring import mark_safe 

> a = mark_safe(a) 

このエラーも発生します。

Djangoは現在の金額を金庫に適用していませんか?

エスケープを解除する方法はありますか?

(私はGoogleの-のAppEngineに開発されています。)

+1

ポストフルトラックバック – jpic

答えて

2

それはあなたが求めているものを完全には明らかではないのですが、あなたはautoescape template tagでエスケープDjangoの自動を無効にすることができます。たとえば:

>>> 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

+1

App Engineで 'mark_safe'を使用する場合は、' google.appengine._internal.django.utils.safestring'をインポートしてください。それ以外の場合は動作しません。 –

関連する問題