Установка и сброс значения переменной в шаблоне django - PullRequest
2 голосов
/ 16 апреля 2011

Я хочу установить и сбросить флаговую переменную внутри шаблона django.Есть ли способ сделать это?

{% for software in softwares %}
    //here want to asign default value to flag( flag = False)

    {% for mysoftware in mysoftwares %}
        {% if mysoftware.name == software.name %}
        //here want to set value to True to flag( flag = True)
        {{ software.name }}<br />
        {% endif %}
    {% endfor %}

    //check flag here
    {% if flag == False %}
    Software not assigned.
    {% endif %}
{% endfor %}

1 Ответ

5 голосов
/ 16 апреля 2011

Нет способа сделать это, насколько мне известно. Возможно, предварительно рассчитайте список кортежей в своем представлении и вместо этого переберите его - отобразив результаты. e.g.:

{% for software, assigned in software_list %}
  {% if assigned %}
    {{ software.name }}
  {% else %}
    Software not assigned
  {% endif %}
{% endif %}

Затем, на ваш взгляд, просто заполните данные software_list простой конструкцией python:

names = [mysoftware.name for mysoftware in mysoftwares]
software_list = [(software, software.name in names) for software in softwares]

И добавьте это в свой контекст.

Часто заманчиво пытаться сделать слишком много в шаблоне, и это не совсем то, для чего они. Вы получите гораздо лучшую читабельность, если сохраните свою логику в языке Python, где он и находится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...