4

Flaskのドキュメントの状態

自動エスケープは、.html、.htm、.xml、および.xhtmlで終わるすべてのテンプレートで有効になっています

拡張子が.jhtmlのテンプレートの自動エスケープを有効にするにはどうすればよいですか?

4

2 に答える 2

7

アプリの作成時に「autoescape」オプションを使用してファイル拡張子を設定できるようです。https://github.com/mitsuhiko/flask/blob/master/flask/app.pyでcreate_jinja_environment()メソッドを見てください

于 2012-11-04T21:35:47.543 に答える
4

@Cagezの回答のおかげで、堅牢な(そして推奨される)ソリューションを思いつくことができました。

Flaskメーリングリストの投稿によると、これを行う方法はをオーバーライドすることflask.Flask.select_jinja_autoescape()です。自動エスケープされるテンプレートをオーバーライドする方法を示すその投稿のリンクされたスニペットは完全には機能しなかったので、私は次のことを思いつきました。これは機能します。

class JHtmlEscapingFlask(Flask):

    def select_jinja_autoescape(self, filename):
        if filename is None:
            return False
        if filename.endswith('.jhtml'):
            return True
        return Flask.select_jinja_autoescape(self, filename)

app = JHtmlEscapingFlask(__name__)

これをメインのFlaskアプリファイルの先頭に置き、通常のファイルを置き換えますapp = Flask(__name__)

于 2012-11-05T13:56:24.177 に答える