【发布时间】: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">«</span>
</a>
</li>
{% else %}
<li class="disabled" aria-label="previous"><span aria-hidden="true">«</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">»</span>
</a>
</li>
{% else %}
<li class="disabled" aria-label="next"><span aria-hidden="true">»</span></li>
{% endif %}
</ul>
</nav>
我得到以下异常:
第 26 行的块标记无效:“else”,预期为“empty”或“endfor”。您是否忘记注册或加载此标签?
第 26 行对应于 {% for %} 循环内的 {% else %} 子句。据我所知,这个 else 子句与 if 语句正确匹配,但模板解析器似乎期望一个子句匹配那里的 for 循环。
【问题讨论】:
-
即使您在此块中似乎有正确的
if else匹配,如果您在其他部分有错误,错误可能仍然会爆炸。我建议调试的是完全删除<nav>块并一点一点地添加代码。