自動エスケープは、.html、.htm、.xml、および.xhtmlで終わるすべてのテンプレートで有効になっています
拡張子が.jhtmlのテンプレートの自動エスケープを有効にするにはどうすればよいですか?
自動エスケープは、.html、.htm、.xml、および.xhtmlで終わるすべてのテンプレートで有効になっています
拡張子が.jhtmlのテンプレートの自動エスケープを有効にするにはどうすればよいですか?
アプリの作成時に「autoescape」オプションを使用してファイル拡張子を設定できるようです。https://github.com/mitsuhiko/flask/blob/master/flask/app.pyでcreate_jinja_environment()メソッドを見てください
@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__)