我决定安装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'.
我正在使用文档中的标记:
{% 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标签,它就能正常工作。
答案 0 :(得分:8)
{% autoescape %}
代码需要使用Jinja 2.4或更高版本并加载jinja2.ext.autoescape
扩展程序。
env = Environment(autoescape=True, extensions=['jinja2.ext.autoescape'],
loader=...)