2011-01-12 12 views
5

autoescapeの機能をサポートするために、webappアプリケーションで使用するjinja2をインストールすることにしました。そこで私はpython 2.5にjinja2をインストールし、プロジェクト内でそのディレクトリを指すようにシンボリックリンクを作成しました。ほとんどの場合、うまく動作しています。google app engine webappのjinja2 autoescapeに関する問題

EXCEPT、私は実際に{%のautoescape真%}タグを使用しようとすると、私はメッセージを取得:彼らはドキュメントでそれを持っているように

File "/Users/me/project/templates/_base.html", line 1, in template 
    {% autoescape true %} 
TemplateSyntaxError: Encountered unknown tag 'autoescape'. 

を私はタグを使用しています:

from jinja2 import Environment, FileSystemLoader, TemplateNotFound 
from jinja2.ext import autoescape 

そして、それはだから、インポートが正常に動作している:私のハンドラファイル私は、関連するものを輸入しています以内

{% autoescape true %} stuff {{var1}} stuff {{var2}}{% endautoescape %} 

エラーを投げることはありません。私は何か間違っているのですか、あるいはおそらくext.pyのようにjinja2自体に問題がありますか?


UPDATE: 私は以下sharthの提案を試してみましたが、同じ結果を得ました。彼の提案を使用して私の更新されたハンドラがあります。

class MainHandler(BaseHandler): 
    def get(self): 

     self.context['testEscape']='<script type="javascript">alert("hi");</script>' 
     env = Environment(loader=FileSystemLoader([os.path.join(os.path.dirname(__file__), 'templates')]), autoescape=False) 
     template = env.get_template('index.html') 
     content = template.render(self.context) 
     self.response.out.write(content) 

また、私はautoescapeタグを使用しない限り、正常に動作します。

+0

jinja2オートコンプリートタグがtipfyフレームワークにも記載されているように機能しないことに気付きました。これは、私がそれをどのように使っているのかという問題ではなく、jinja2のバグだと思うようになる。 –

答えて

8

{% autoescape %}タグには、Jinja 2.4以上、jinja2.ext.autoescape拡張が必要です。

env = Environment(autoescape=True, extensions=['jinja2.ext.autoescape'], 
        loader=...) 
+2

ありがとうございます。私は、スクリプトの一番上にあるimportステートメントを使って拡張機能をインポートすることができ、環境をインスタンス化するときに拡張機能をパラメータとして設定する必要があることを認識しませんでした。拡張機能(http://jinja.pocoo.org/extensions/)のドキュメントの上部にある「拡張機能の追加」というタイトルの段落は、死んでいたはずです。 :-) –

+0

実際にはどのようにautoescapeの意味は何ですか? – Virbhadrasinh