谷歌应用程序引擎webapp中jinja2 autoescape的问题

Bob*_*ian 5 python google-app-engine jinja2

我决定安装jinja2以与我的webapp应用程序一起使用,以支持autoescape功能.所以我将jinja2安装到python 2.5中并在我的项目中创建了一个指向该目录的符号链接.它大部分工作正常.

除了,当我实际尝试使用{%autoescape true%}标记时,我收到消息:

File "/Users/me/project/templates/_base.html", line 1, in template
    {% autoescape true %}
TemplateSyntaxError: Encountered unknown tag 'autoescape'.
Run Code Online (Sandbox Code Playgroud)

我在文档中使用了标签:

{% autoescape true %} stuff {{var1}} stuff {{var2}}{% endautoescape %}
Run Code Online (Sandbox Code Playgroud)

在我的处理程序文件中,我正在导入相关的东西:

from jinja2 import Environment, FileSystemLoader, TemplateNotFound
from jinja2.ext import autoescape
Run Code Online (Sandbox Code Playgroud)

导入工作正常,因为它没有抛出错误.我做错了什么,或者jinja2本身有问题,比如可能在ext.py中?


更新:我在下面尝试了sharth的建议并获得了相同的结果.这是我使用他的建议更新的处理程序.

class MainHandler(BaseHandler):
    def get(self):

        self.context['testEscape']='<script type="javascript">alert("hi");</script>'
        env = Environment(loader=FileSystemLoader([os.path.join(os.path.dirname(__file__), 'templates')]), autoescape=False)
        template = env.get_template('index.html')
        content = template.render(self.context)
        self.response.out.write(content)
Run Code Online (Sandbox Code Playgroud)

同样,只要我不使用autoescape标签,它就可以正常工作.

Arm*_*her 8

{% autoescape %}标签需要神社2.4或更高版本和jinja2.ext.autoescape加载的扩展.

env = Environment(autoescape=True, extensions=['jinja2.ext.autoescape'],
                  loader=...)
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.我以为我可以在脚本顶部使用import语句导入扩展,并且没有意识到我需要在实例化环境时将扩展名设置为参数.我认为扩展文档顶部的段落(http://jinja.pocoo.org/extensions/)标题为"添加扩展"应该是一个死的赠品.:-) (2认同)