Python Django模板语言中的控制流

Python Django模板语言中的控制流,python,django,django-templates,Python,Django,Django Templates,我在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<

我在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 %}
{%if user.u经过身份验证%}
{rel在关系中的百分比%}
{%if rel.group_id==g.id%}
{%endif%}
{%else%}
{%endfor%}
{%endif%}
代码的目的是检查是否存在匹配项,然后打印出unsubscribe标签。如果没有匹配项,请打印订阅标签

我之所以这么做有困难,是因为在Django模板中,我读到不能有变量(即True或False)

更新:(问题)

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

更新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 %}
{%if user.u经过身份验证%}
{rel在关系中的百分比%}
{%if rel.group_id==g.id%}
{%else%}
{%endif%}
{%endfor%}
{%endif%}

更新

您需要检查
g
是否处于
关系中
,并据此做出决策。

我通常解决这个问题的方法是在我的视图中创建一个函数,该函数执行此检查并将allon传递给视图。看看。

我需要检查多个关系。如果rel中有匹配项。group_id==g.id我想打印出取消订阅的一个(即用户在组中)。如果rel中没有匹配项。group_id==g.id,他们不在组中,因此将注册信息打印到组标记中。因此,您还需要
else if
语句(超过其中已有的两个案例)?从我所看到的,上面的代码和你描述的完全一样。我只希望它打印一次,而不是多次。因此,当它检查每个rel时,如果没有匹配项,它将每次打印注册。我只想让它做一次。另外,我知道它们是混淆的,我试图做一个for-else循环,但是它不在Django中。这将为关系中的每个rel打印一个或另一个。什么是
g
?好的,让我重新表述一下这个问题。