Django模板:比较IF语句中的字典长度

时间:2009-04-17 20:38:45

标签: python django

我试图比较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 个答案:

答案 0 :(得分:11)

您可以使用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 %}

其他任何事情都必须沿着custom tags and filters的路径前进。

答案 1 :(得分:3)

您实际上可以同时使用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过滤器之间没有空格,以免引发异常。

答案 2 :(得分:1)

使用smart_if模板标记:

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

超酷:)

可以做所有明显的事情,如:

{%if articles | length&gt; = 5%} ... {%endif%}

{%if“ifnotequal tag”!=“beautiful”%} ... {%endif%}