Django - 'elif'。您是否忘记注册或加载此标签?
Django - 'elif'. Did you forget to register or load this tag?
我正在开发一个简单的 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 %}
不,这是无效的。正如 documentation on template inheritance 所说:
If you use {% extends %}
in a template, it must be the first template tag in that template. Template inheritance won’t work, otherwise.
因此,您应该使用不同的模板,每个模板都继承自不同的基本模板,并让视图逻辑决定使用哪个模板。
{% extends %}
应该是模板中的第一个标签。
你在 views.py
做你想做的事,像这样:
if request.user.role == manager:
render something
else:
render something else
你必须将 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 %}
我正在开发一个简单的 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 %}
不,这是无效的。正如 documentation on template inheritance 所说:
If you use
{% extends %}
in a template, it must be the first template tag in that template. Template inheritance won’t work, otherwise.
因此,您应该使用不同的模板,每个模板都继承自不同的基本模板,并让视图逻辑决定使用哪个模板。
{% extends %}
应该是模板中的第一个标签。
你在 views.py
做你想做的事,像这样:
if request.user.role == manager:
render something
else:
render something else
你必须将 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 %}