0

我有以下代码,写在 Django 模板中。

{% if user.is_authenticated %}
    <div style="float: right;">
    {% for rel in RELATIONS %}
        {% if rel.group_id == g.id %}
            <a href="/group/{{ g.id }}/unsubscribe/" class="form-button">Unsubscribe</a>
        {% endif %}
    {% else %}
        <a href="/group/{{ g.id }}/subscribe/" class="form-button">Enrol</a>
    {% endfor %}
    </div>
{% endif %}

该代码的目的是检查是否有匹配项,然后打印出取消订阅标签。如果不匹配打印出订阅标签。

我这样做有困难的原因是因为你在 Django 模板中,我读到你不能有变量(即 True 或 False)。

更新:(问题)

我只想打印一次取消订阅/订阅按钮。仅当 for 循环内有匹配项时才打印出取消订阅按钮。否则,如果不匹配则打印出订阅按钮(即 rel.group_id == g.id 根本不匹配)

更新 2:

在之前进行一些研究时,我发现了这一点:https ://code.djangoproject.com/ticket/3481 这可能会为我的问题添加一些上下文。

谢谢您的帮助。

4

1 回答 1

2

似乎您的 if/else/endif 混淆了。尝试

{% if user.is_authenticated %}
    <div style="float: right;">
    {% for rel in RELATIONS %}
        {% if rel.group_id == g.id %}
            <a href="/group/{{ g.id }}/unsubscribe/" class="form-button">Unsubscribe</a>
        {% else %}
            <a href="/group/{{ g.id }}/subscribe/" class="form-button">Enrol</a>
        {% endif %}
    {% endfor %}
    </div>
{% endif %}

更新

您想检查是否g参与relations并据此做出决定。
我通常解决这个问题的方法是在我的视图中创建一个函数来执行此检查并将其传递给视图。看看这里

于 2012-07-13T03:26:49.927 回答