在我的模板中,我正在尝试检查列表是否为空。如果它不是空的,我会检查一下。但是,如果列表为空,则“else”永远不会被评估。
{% for secret in secrets %}
<div class="secrets">
<p>{{secret.secret}}</p>
{%load humanize%}
<p>({{secret.created_at|naturaltime}})</p>
<p>{{secret.likes.all|length}} likes</p>
{% for like in secret.likes.all %}
{% if like %}
{% if like.id == request.session.user_id %}
<p>You liked this</p>
{% else %}
<a href="{% url 'secrets:like_it' id=secret.id %}">Like</a>
{% endif %}
{% else %} <!--This seems to get skipped-->
<a href="{% url 'secrets:like_it' id=secret.id %}">Like</a>
{% endif %}
{% endfor %}
</div>
{% endfor %}
答案 0 :(得分:0)
if/else
在for循环中。如果迭代的序列(secret.likes.all
)为空,则永远不会执行if/else
语句。对于没有迭代时发生的操作,请使用以下内容:
{% for like in secret.likes.all %}
{% if like %}
{% if like.id == request.session.user_id %}
<p>You liked this</p>
{% else %}
<a href="{% url 'secrets:like_it' id=secret.id %}">Like</a>
{% endif %}
{% endif %}
{% else %} <!--This seems to get skipped-->
<a href="{% url 'secrets:like_it' id=secret.id %}">Like</a>
{% endfor %}