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)を持つことができないことを読みました。

更新:(質問)

購読解除/購読ボタンを1回だけ印刷したい。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 に答える