You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django模板报Invalid block tag 'endif'错误,如何实现书名后自动加逗号

报错原因

Django模板语法不允许标签拆分到多行,你的代码中{% if not forloop.last %}被拆为了两行,模板解析器无法识别到完整的if标签,读到后续{% endif %}时找不到匹配的if声明,就会抛出该错误。

修复方案

方案1:修正换行问题

将if标签的完整内容放在同一行即可,修改后的模板代码如下:
author_list.html

{% extends "base_generic.html" %}
{% block content %}
<h1>All authors</h1>
<ul>
    {% for author in author_list %}
    <li>
        <a href="">{{ author.last_name }}:</a>
        {% for book in author.book_set.all %}
            {{ book.title }}{% if not forloop.last %}, {% endif %}
        {% endfor %}
    </li>
    {% endfor %}
</ul>
{% endblock %}

方案2:用内置过滤器简化实现

你需要的书名间追加逗号的效果,可以直接用Django自带的join过滤器实现,无需手动写循环判断,代码更简洁:

{% extends "base_generic.html" %}
{% block content %}
<h1>All authors</h1>
<ul>
    {% for author in author_list %}
    <li>
        <a href="">{{ author.last_name }}:</a>
        {{ author.book_set.all.values_list('title', flat=True)|join:", " }}
    </li>
    {% endfor %}
</ul>
{% endblock %}

内容的提问来源于stack exchange,提问作者Ruslan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:36:05