【发布时间】:2015-04-13 12:53:04
【问题描述】:
我正在使用 tornadoweb 构建 Web 服务。我有两个不同的模板,其中包含 html head、导航栏以及服务对所有页面服务器通用的所有 UI。第一个,base.html 包含导航栏项目和其他仅显示给经过身份验证的用户的 html 元素。第二个,base_anon.html 更轻,包含一些可供匿名用户使用的项目。
现在我正在创建包含页面实际内容的第三个模板。我希望此模板可以扩展 base_anon.html 或 base.html,具体取决于用户是否经过身份验证。如果用户未通过身份验证,变量user 将为 Falsy。有没有办法进行条件模板扩展?
我尝试了以下方法:
{% if user %}
{% extends "base.html" %}
{% else %}
{% extends "base_anon.html" %}
{% end %}
其中,当由 tornado 渲染时会生成以下堆栈跟踪(仅复制堆栈的末尾):
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 语句之间冲突的信息。知道为什么会出现此错误吗?如果这确实是预期的,我还能如何根据某个变量的值使用不同的基本模板?
感谢阅读!
【问题讨论】: