-1

在我的 Django 应用程序中有一些用户,department codes我想向这些用户显示模板的不同细节,但超级用户应该看到所有内容。这是我的代码:

template.html

{% if user.is_superuser or user.department_code=1%}
<p>Your department code is 1 or you are a superuser</p>
{% elif user.is_superuser or user.department_code=2%}
<p>Your department code is 2 or you are a superuser</p>
{% else %}
<p> You are a superuser</p>
{% endif %}

在这种情况下,我作为超级用户只看到第一段。我怎么能正确地做到这一点?

4

1 回答 1

2

您的问题是由您使用{% elif %}.

如果您是超级用户,则检查第一个条件,它评估True,然后您的以下{% elif %}s 和{% else %}不再检查。{% elif %}仅当第一个条件为 时才考虑您的第二个False,这就是如果您不是超级用户,它会起作用的原因。要{% else %}触发前两个条件,必须同时是False. 例如,如果您以非超级用户身份登录并且部门代码为 3,则可能会发生这种情况。

只需将您{% elif %}的 s替换为即可{% if %}

{% if user.is_superuser or user.department_code == 1 %}
    <p>Your department code is 1 or you are a superuser</p>
{% endif %}
{% if user.is_superuser or user.department_code == 2 %}
    <p>Your department code is 2 or you are a superuser</p>
{% endif %}
{% if user.is_superuser %}
    <p> You are a superuser</p>
{% endif %}

您在相等性检查中还缺少“=”,请注意我如何在每个条件中使用两个而不是只使用一个。

于 2020-08-14T09:29:30.167 回答