Я решил установить jinja2 для использования с моим приложением webapp, чтобы поддерживать функциональность автоэскейпа. Поэтому я установил 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
И импорт работает нормально, потому что ' s не выдает ошибку. Я что-то делаю не так, или есть проблема с самим jinja2, например, в ext.py?
UPDATE: Я попробовал предложение Шарта ниже и получил тот же результат. Вот мой обновленный обработчик, использующий его предложение.
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.