不,这是无效的。正如关于模板继承的文档所说:
我正在开发一个简单的Django应用程序。下面的代码是否有效?我的代码:
{% if request.session.role is "Manager" %}
{% extends 'manager_base_nav.html' %}
{% elif request.session.role is "Agent" %}
{% extends 'agent_base_nav.html' %}
{% else %}
{% extends 'customer_base_nav.html' %}
{% endif %}
你必须将extends放在首位,如果你想在应用程序中使用if或else,你可以通过在views.py 中定义一个变量来实现
if request.session.role is "Manager":
ex_template = 'manager_base_nav.html'
elif request.session.role is "Agent":
ex_template = 'agent_base_nav.html' %}
else:
ex_template = 'customer_base_nav.html'
在你的html文件上,你必须做这个
{% extends ex_template %}
如果在模板中使用
{% extends %}
,它必须是该模板中的第一个模板标记。否则,模板继承将不起作用。
因此,您应该使用不同的模板,每个模板都继承自不同的基本模板,并让视图逻辑决定使用哪个模板。
{% extends %}
应该是模板中的第一个标记。
你可以在views.py
中做你想做的事情,类似这样:
if request.user.role == manager:
render something
else:
render something else