如何在Flask中使用.jhtml扩展名在模板中启用自动转义?

2024-09-30 16:24:40 发布

您现在位置:Python中文网/ 问答频道 /正文

The Flask docs state

autoescaping is enabled for all templates ending in .html, .htm, .xml as well as .xhtml

如何为以.jhtml扩展名结尾的模板启用自动转义?在


Tags: theinflaskdocsforishtmlas
2条回答

看起来你可以在创建应用程序时用“autoescape”选项设置文件扩展名。看看位于https://github.com/mitsuhiko/flask/blob/master/flask/app.py的create_jinja_environment()方法

多亏了@Cagez's answer我才想出了一个健壮的(和推荐的)解决方案。在

根据a post on the Flask mailing list,方法是重写flask.Flask.select_jinja_autoescape()。在那篇文章中演示如何override which templates are autoescaped的链接片段不太管用,所以我想出了以下的方法,确实管用:

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

相关问题 更多 >