【问题标题】:Django TemplateError when using if...else block inside for loop在 for 循环中使用 if...else 块时出现 Django TemplateError
【发布时间】:2016-09-21 22:18:30
【问题描述】:

我的 django 模板中有以下内容:

<nav>
    <ul class="pagination">
        {% if page.has_previous %}
        <li>
            <a href="{% url 'main:stream_detail' stream_id=stream.id %}?p={{page.next_page_number}}" aria-label="Previous">
                <span aria-hidden="true">&laquo;</span>
            </a>
        </li>
        {% else %}
        <li class="disabled" aria-label="previous"><span aria-hidden="true">&laquo;</span></li>
        {% endif %}
        {% for i in paginator.page_range %}
        (% if i == page.number %}
        <li class="active">{{i}} <span class="sr-only">(current)</span></li>
        {% else %}
        <li><a href="{% url 'main:stream_detail' stream_id=stream.id %}?p={{i}}">{{i}}</a></li>
        {% endif %}
        {% endfor %}
        {% if page.has_next %}
        <li>
            <a href="{% url 'main:stream_detail' stream_id=stream.id %}?p={{page.next_page_number}}" aria-label="Next">
                <span aria-hidden="true">&raquo;</span>
            </a>
        </li>
        {% else %}
        <li class="disabled" aria-label="next"><span aria-hidden="true">&raquo;</span></li>
        {% endif %}
    </ul>
</nav>

我得到以下异常:

第 26 行的块标记无效:“else”,预期为“empty”或“endfor”。您是否忘记注册或加载此标签?

第 26 行对应于 {% for %} 循环内的 {% else %} 子句。据我所知,这个 else 子句与 if 语句正确匹配,但模板解析器似乎期望一个子句匹配那里的 for 循环。

【问题讨论】:

  • 即使您在此块中似乎有正确的if else 匹配,如果您在其他部分有错误,错误可能仍然会爆炸。我建议调试的是完全删除 &lt;nav&gt; 块并一点一点地添加代码。

标签: django django-templates


【解决方案1】:

for 循环中的 if 标记存在语法错误:

(% if

...应该是

{% if

【讨论】:

    【解决方案2】:

    您使用'(' 而不是'{' 在线(% if i == page.number %}

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 2017-08-02
      • 2019-12-04
      • 2016-01-29
      • 2012-11-13
      • 1970-01-01
      • 2021-09-16
      • 2019-11-03
      • 1970-01-01
      相关资源
      最近更新 更多