Python tornado,条件模板扩展
我正在使用TornadowWeb构建一个web服务。我有两个不同的模板,其中包含htmlPython tornado,条件模板扩展,python,templates,tornado,Python,Templates,Tornado,我正在使用TornadowWeb构建一个web服务。我有两个不同的模板,其中包含htmlhead、导航栏和该服务对所有页面服务器通用的所有UI。第一个base.html包含仅向经过身份验证的用户显示的导航栏项目和其他html元素。第二个base\u anon.html更轻,包含一些匿名用户可以使用的项目 现在我正在创建第三个模板,它将包含页面的实际内容。我希望此模板扩展base\u anon.html或base.html,具体取决于用户是否经过身份验证。如果用户未经过身份验证,变量user将无效
head
、导航栏和该服务对所有页面服务器通用的所有UI。第一个base.html
包含仅向经过身份验证的用户显示的导航栏项目和其他html元素。第二个base\u anon.html
更轻,包含一些匿名用户可以使用的项目
现在我正在创建第三个模板,它将包含页面的实际内容。我希望此模板扩展base\u anon.html
或base.html
,具体取决于用户是否经过身份验证。如果用户未经过身份验证,变量user
将无效。有没有办法进行条件模板扩展
我尝试了以下方法:
{% if user %}
{% extends "base.html" %}
{% else %}
{% extends "base_anon.html" %}
{% end %}
由tornado渲染时,将生成以下堆栈跟踪(仅复制堆栈的末尾):
我没有更多的信息可以解释这个错误。我在中也找不到任何关于if
和extends
语句之间冲突的信息。知道为什么会出现这个错误吗?如果这是实际需要的,那么根据某个变量的值,我还可以如何使用不同的基本模板
谢谢你的阅读 目前无法满足您的要求。如果使用了
{%extends%}
指令,它必须出现在顶层,并且其参数必须是常量;无法更改要扩展的模板
相反,考虑是否有登录的用户使用不同的顶层模板,并将常见元素封装在<代码> uimoDule< /代码>中。或者将所有
{%if%}
指令放在基本模板中,可能放在{%block%}
定义周围
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