当在for循环中使用if ... else块时,Django TemplateError

时间:2016-05-24 15:34:09

标签: django django-templates

我将以下内容作为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行对应{% else %}循环内的{% for %}子句。正如我所知道的,这个else子句正确匹配if语句,但模板解析器似乎期望一个子句匹配for循环。

2 个答案:

答案 0 :(得分:1)

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

(% if

......应该是

{% if

答案 1 :(得分:1)

您在'('

行使用'{'代替(% if i == page.number %}