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

时间:2012-11-04 21:06:31

标签: python templates flask jinja2

The Flask docs state

  

为所有以.html,.htm,.xml和.xhtml结尾的模板启用自动加载

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

2 个答案:

答案 0 :(得分:5)

在创建应用时,您似乎可以使用'autoescape'选项设置文件扩展名。查看https://github.com/mitsuhiko/flask/blob/master/flask/app.py

处的create_jinja_environment()方法

答案 1 :(得分:3)

感谢@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__)