python - 谷歌应用引擎 webapp 中的 jinja2 autoescape 问题

标签 python google-app-engine jinja2

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

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

File "/Users/me/project/templates/_base.html", line 1, in template
    {% autoescape true %}
TemplateSyntaxError: Encountered unknown tag 'autoescape'.

我使用的是文档中的标签:

{% autoescape true %} stuff {{var1}} stuff {{var2}}{% endautoescape %}

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

from jinja2 import Environment, FileSystemLoader, TemplateNotFound
from jinja2.ext import autoescape

导入工作正常,因为它没有抛出错误。我做错了什么,还是 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)

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

最佳答案

{% autoescape %} 标签需要 Jinja 2.4 或更高版本并加载 jinja2.ext.autoescape 扩展。

env = Environment(autoescape=True, extensions=['jinja2.ext.autoescape'],
                  loader=...)

关于python - 谷歌应用引擎 webapp 中的 jinja2 autoescape 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674366/

相关文章:

python - matplotlib 与点颜色对应的 basemap 图例

python - Windows 或 Ubuntu VBox 上的串行端口从 Python 与 Arduino 对话

java - Google App引擎身份验证问题(Google帐户API)

java - 创建 App Engine 后端时找不到 gcm.jar 错误 => 建议安装已弃用的库

javascript - Flask通过url_for()向python发送变量数据

python - 用 python 绘制 3D 散点图?

python - 无法用所有列的列值填充缺失值

java - GAE : Cannot set admin login credential for module http requests

python - 如何使应用程序引擎从数据存储区而不是内存缓存中检索属性值?

python - 如何在子标题下正确显示图像