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

在Django中实现Listing过滤器时出现最大递归深度错误的问题求助

解决Django模板递归深度错误问题

你遇到的最大递归深度错误原因非常明确,咱们直接定位问题核心:

问题根源

在你的detailed2.html模板中,有一行代码触发了无限递归:

{% include "detailed2/detailed2.html" %}

这相当于让当前模板在渲染时不断加载它自己,每一次包含都会重新执行模板逻辑,循环往复直到达到Python的递归深度上限,最终抛出错误。

解决步骤

1. 拆分模板,创建单独的列表项组件

你需要把单个detaileditems对象的渲染逻辑抽成独立的子模板,比如在detailed2模板文件夹下新建listing_item.html,内容示例如下:

<!-- templates/detailed2/listing_item.html -->
<div class="card h-100">
  <img src="{{ listing.image.url }}" class="card-img-top" alt="{{ listing.title }}">
  <div class="card-body">
    <h5 class="card-title">{{ listing.title }}</h5>
    <p class="card-text">{{ listing.body|truncatewords:20 }}</p>
    <p class="card-text"><small class="text-muted">类型: {{ listing.type }} | 发布时间: {{ listing.pubdate|date:"Y-m-d" }}</small></p>
  </div>
</div>

你可以根据实际需求调整布局和展示字段。

2. 修改主模板引用正确的子模板

回到detailed2.html,把原来的递归包含语句替换成新的子模板,顺便修正了row-cols-sm2的拼写错误:

<div class = "col-lg-6 col-md-8 mx-auto">
    <form method = "get">
        {{ listing_filter.form }}
        <button class="btn btn-sm btn-danger" type="submit">Search</button>
    </form>
</div>
<div class = "container">
    <div class = "row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3">
        {% for listing in listing_filter.qs %}
            <div class = "col">
                {% include "detailed2/listing_item.html" %}
            </div>
        {% endfor %}
    </div>
</div>

3. 可选:优化视图代码

你的视图里定义的items = detaileditems.objects其实没有被模板使用(模板用的是listing_filter.qs),可以简化视图逻辑:

from .models import detaileditems
from .filters import ListingFilters

def alldetailed2(request):
    listing_filter = ListingFilters(request.GET, queryset=detaileditems.objects.all())
    context = {
        'listing_filter': listing_filter,
    }
    return render(request, 'detailed2/detailed2.html', context)

这样调整后,模板就不会再递归调用自己,django-filters的过滤逻辑也能正常工作了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 15:32:30