Python ELSE语句将被跳过

Python ELSE语句将被跳过,python,django,Python,Django,在我的模板中,我尝试检查列表是否为空。如果它不是空的,我检查一些东西。但是,如果列表为空,则永远不会计算它的“else” {% for secret in secrets %} <div class="secrets"> <p>{{secret.secret}}</p> {%load humanize%} <p>({{secret.created_at|naturaltime}})

在我的模板中,我尝试检查列表是否为空。如果它不是空的,我检查一些东西。但是,如果列表为空,则永远不会计算它的“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 %}
{%for secrets in secrets%}
{{secret.secret}}

{%load humanize%} ({{secret.created|u at|naturaltime}})

{{secret.likes.all | length}喜欢

{%表示机密中的like.likes.all%} {%if like%} {%if like.id==request.session.user_id%} 你喜欢这个

{%else%} {%endif%} {%else%} {%endif%} {%endfor%} {%endfor%}
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 %}
{%for like in secret.likes.all%}
{%if like%}
{%if like.id==request.session.user_id%}
你喜欢这个

{%else%} {%endif%} {%endif%} {%else%} {%endfor%}
@abccd这是Django的模板语言,在这种语言中,Python实际上是