Шаблон Django: сравнение длины словаря в выражении IF - PullRequest
2 голосов
/ 18 апреля 2009

Я пытаюсь сравнить длину словаря внутри шаблона django

Например, я хотел бы знать правильный синтаксис для следующих действий:

    {% if error_messages %}
        <div class="error">
            {% if length(error_messages) > 1 %}
                Please fix the following errors:
                <div class="erroritem">
                    {% for key, value in error_messages.items %}
                        <br>{{ value }}
                    {% endfor %}
                </div>

            {% else %}
                    {% for key, value in error_messages.items %}
                        {{ value }}
                    {% endfor %}
            {% endif %}
        </div>
    {% endif %}

Ответы [ 3 ]

11 голосов
/ 18 апреля 2009

Вы можете сделать это, используя фильтр length и тег ifequal :

{% if error_messages %}
    <div class="error">
        {% ifequal error_messages|length 1 %}
            error_messages[0]
        {% else %}
            Please fix the following errors:
            <div class="erroritem">
            {% for key, value in error_messages.items %}
                <br>{{ value }}
            {% endfor %}
            </div>
        {% endifequal %}
    </div>
{% endif %}

Все остальное придется пройти по пути пользовательских тегов и фильтров .

3 голосов
/ 01 мая 2015

Вы можете использовать тег if и фильтр length

{% if page_detail.page_content|length > 2 %}
<strong><a class="see-more" href="#" data-prevent-default="">
Learn More</a></strong>{% endif %}

NB Убедитесь, что между словарем / объектом и фильтром length нет пробелов при использовании в теге if, чтобы не вызывать исключение.

1 голос
/ 03 февраля 2010

используйте тег шаблона smart_if:

http://www.djangosnippets.org/snippets/1350/

это супер круто :) 1006 *

может делать все очевидные вещи, такие как:

{% if article | length> = 5%} ... {% endif%}

{% if "ifnotequal tag"! = "Beautiful"%} ... {% endif%}

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