Я использую tornadoweb для создания веб-сервиса. У меня есть два разных шаблона, содержащий html head
, навигационную панель и весь пользовательский интерфейс, который является общим для всех страниц сервера службой. Первый, base.html
содержит элементы навигационной панели и другие элементы html, отображаемые только для прошедших проверку подлинности пользователей. Второй, base_anon.html
легче и содержит несколько элементов, доступных анонимным пользователям.Pornon торнадо, условное расширение шаблона
Теперь я создаю третий шаблон, который будет содержать фактическое содержимое страницы. Я хотел бы, чтобы этот шаблон расширил либо base_anon.html
, либо base.html
в зависимости от того, аутентифицирован пользователь или нет. Переменная user
будет Falsy, если пользователь не аутентифицирован. Есть ли способ сделать условное расширение шаблона?
Я попробовал следующее:
{% if user %}
{% extends "base.html" %}
{% else %}
{% extends "base_anon.html" %}
{% end %}
который, когда оказывает Торнадо генерирует следующий трассировки стека (скопированный только конец стека):
Traceback (most recent call last):
[...]
File "[...]/lib/python2.7/site-packages/tornado/template.py", line 291, in _generate_python
ancestors[0].generate(writer)
File "[...]/lib/python2.7/site-packages/tornado/template.py", line 416, in generate
self.body.generate(writer)
File "[...]/lib/python2.7/site-packages/tornado/template.py", line 429, in generate
chunk.generate(writer)
File "[...]/lib/python2.7/site-packages/tornado/template.py", line 510, in generate
self.body.generate(writer)
File "[...]/lib/python2.7/site-packages/tornado/template.py", line 429, in generate
chunk.generate(writer)
File "[...]/lib/python2.7/site-packages/tornado/template.py", line 398, in generate
raise NotImplementedError()
NotImplementedError
У меня нет больше информации чтобы это могло объяснить эту ошибку. Я также не мог найти никакой информации в docs о конфликте между if
и extends
заявлениями. Любая идея, почему эта ошибка появляется? Если это действительно ожидаемо, как еще я могу использовать другой базовый шаблон в зависимости от значения некоторой переменной?
Спасибо за чтение!