如何在django模板中同时检查if、elif、else条件

ohi*_*hid -3 python django

我在类别字段中有 3 个类别。我想在 django 模板中检查它并为 3 个不同的类别分配适当的 url。

我试过:

{% for entry in entries %}
        {% if entry.category == 1 %}
        <a href="{% url 'member:person-list' %}"><li>{{ entry.category }}</li></a>
        {% elif entry.category == 2 %}          
        <a href="{% url 'member:execomember-list' %}"><li>{{ entry.category}}</li></a>
         {% else %}
         <a href="{% url 'member:lifemember-list' %}"><li>{{ entry.category}}</li></a>
        {% endif %}
{% empty %}
    <li>No recent entries</li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但我知道python只用if检查第一个匹配条件。因此它只给出了一个想要的结果。如何使用正确的链接获取所有三个条目?

编辑:

虽然python只检查第一个匹配的if条件,但当在for循环中使用elif时,它会检查每个条件直到endfor循环。因此,我在下面的回答工作正常。

ohi*_*hid 9

这是我的工作答案:

   {% for entry in entries %}
        {% if entry.category == 'General Member' %}
        <a href="{% url 'member:person-list' %}"><li>{{ entry.category }}</li></a>
    {% elif entry.category == 'Executive Committee Member' %}
        <a href="{% url 'member:execomember-list' %}"><li>{{ entry.category}}</li></a>
    {% else %}
    <a href="{% url 'member:person-list' %}"><li>{{ entry.category}}</li></a>
        {% endif %}
    {% empty %}
        <li>No recent entries</li>
  {% endfor %}
Run Code Online (Sandbox Code Playgroud)

输出的网页视图:

在此处输入图片说明

有关更多说明,我使用 django shell 检查了我的代码。查看我的shell的片段:

在此处输入图片说明

即使我更改了 if 条件的顺序,结果也保持不变。查看带有输出的 shell 代码:

在此处输入图片说明

你看我的代码有什么问题吗?它完全符合python条件并给出了预期的结果。任何人都可以在他们的 django shell 上检查它。

  • 所以这实际上与 Python“只检查第一个匹配条件”没有任何关系,而是你将字符串与整数进行比较的事实。 (2认同)