简体   繁体   English

ELSE语句被跳过

[英]ELSE statement is getting skipped

In my template, I am trying check if a list is not empty. 在我的模板中,我正在尝试检查列表是否不为空。 If it is not empty, I check for something. 如果不为空,我检查一下。 However, if the list is empty, it 'else' is never evaluated. 但是,如果列表为空,则永远不会评估“ 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 %}

The if/else is within the for loop. if/else在for循环内。 If the sequence being iterated over ( secret.likes.all ) is empty, that if/else statement will never be executed. 如果要迭代的序列( secret.likes.all )为空,则该if/else语句将永远不会执行。 For an action to occur when there was no iteration, use something like the following: 要使操作在没有迭代的情况下发生,请使用以下内容:

{% 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 %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM