我试图比较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 %}
答案 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%}