如果if语句之后,博客标记立即产生错误

时间:2018-08-29 14:12:22

标签: html django bootstrap-4

我正在尝试使用 Django2.1 Bootstrap4 在HTML文件中为每行呈现三列。

HTML代码如下:

    <main class="container" role="main">
        {% for treasure in treasures %}
            {% block row %}

            <div class="col-sm-4 py-2">
                <div class="card card-body h-100">
                    <h4 class="card-title">{{ treasure.name }} </h4>
                    <img class="card-img-bottom mw-100 mh-100" src="{{ treasure.img_url }}" alt="A Kind of Treasure">
                </div>
            </div>

            {% if forloop.counter|divisibleby:3 %}
                {% endblock %} {% block row %}
            {% endif %}

            {% endblock %}
        {% endfor %}
    </main>

我得到的错误是:

  

第44行上的无效块标记:“ endblock”,预期的“ elif”,“ else”或“ endif”。您忘记注册或加载此标签了吗?

PS:第44行为{% endblock %} {% block row %},因此我在进行if检查后得到了错误。如果删除该行,则不会产生任何错误。

2 个答案:

答案 0 :(得分:0)

您的第一个{% endblock %}标签与{% if forloop.counter|divisibleby:3 %}标签重叠。

您基本上正在执行以下操作:

    {% block row %}
{% if forloop.counter|divisibleby:3 %}
    {% endblock %} 

    {% block row %}
{% endif %}
    {% endblock %}

您的if标记和endif标记位于两个单独的blocks中,这引起了错误。您将必须删除block标签之间的if标签。

答案 1 :(得分:0)

在上一个答案中,您可以重命名块,为清楚起见,请在endblock标签中添加名称。

      {% for treasure in treasures %}
        {% block row %}

        ...

            {% if forloop.counter|divisibleby:3 %}

                {% block row2 %} 
                {% endblock row2 %} # add the name in endblock for clarity

            {% endif %}

        {% endblock row %} # add the name in endblock for clarity

    {% endfor %}