【问题标题】:How do I enable autoescaping in templates with a .jhtml extension in Flask?如何在 Flask 中使用 .jhtml 扩展名在模板中启用自动转义?
【发布时间】:2012-11-04 21:06:31
【问题描述】:

The Flask docs state:

为所有以 .html、.htm、.xml 以及 .xhtml 结尾的模板启用自动转义

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

【问题讨论】:

    标签: python templates flask jinja2


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      感谢@Cagez's answer,我能够提出一个强大的(和推荐的)解决方案。

      根据a post on the Flask mailing list,这样做的方法是覆盖flask.Flask.select_jinja_autoescape()。该帖子中的链接 sn-p 演示了如何使用 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__)

      【讨论】:

      • 虽然我在这里接受了自己的答案,但我依赖于@Cagez 发布的有用信息,所以如果您觉得这个问题和/或答案有用,请给他一个支持。
      猜你喜欢
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2014-03-10
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多