为所有以 .html、.htm、.xml 和 .xhtml 结尾的模板启用自动转义
如何为以 .jhtml 扩展名结尾的模板启用自动转义?
看起来您可以在创建应用程序时使用“自动转义”选项设置文件扩展名。看看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__)