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 %}