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

Django ListView模板无法渲染blog_list查询集问题求助

问题根源

你是在BlogDetail视图渲染的blog.html模板中引入了table_of_contents.html,但BlogDetail的默认上下文仅包含当前访问的单篇博客对象,不存在blog_list变量。只有当你访问BlogList视图绑定的路由时,上下文才会携带你定义的blog_list查询集。

解决方案

方案1:给BlogDetail视图补充上下文

重写BlogDetail的get_context_data方法,主动把博客列表注入上下文:

from django.views import generic
from .models import Blog

class BlogList(generic.ListView):
    queryset = Blog.objects.filter()
    template_name = 'table_of_contents.html'
    context_object_name = 'blog_list'

class BlogDetail(generic.DetailView):
    model = Blog
    template_name = 'blog.html'
    
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 注入博客列表
        context['blog_list'] = Blog.objects.all()
        return context

方案2:检查路由配置(仅针对直接访问博客列表页的场景)

如果你是直接访问博客列表页没有输出,先确认你的urls.py中已经配置了指向BlogList的路由:

from django.urls import path
from .views import BlogList, BlogDetail

urlpatterns = [
    # 博客列表页路由
    path('blogs/', BlogList.as_view(), name='blog_list'),
    # 博客详情页路由
    path('blogs/<int:pk>/', BlogDetail.as_view(), name='blog_detail'),
]

同时检查你的base.html中是否定义了table_of_contents块的占位位置,确保子模板的块内容能被正确渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 09:54:08