我正在尝试使用 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
检查后得到了错误。如果删除该行,则不会产生任何错误。
答案 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 %}