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

Django DetailView视图无法正常显示模型内容问题求助

问题原因

DetailView无法渲染对应内容的核心原因是详情页模板使用的上下文变量名和Django类视图默认传递的变量名不匹配。页面无报错是因为Django模板遇到不存在的变量时默认渲染为空值,不会抛出异常。

Django 未手动指定context_object_name的DetailView,会将查询到的单条模型实例存入两个固定上下文变量传给模板:

  • 通用变量名object
  • 与模型类名全小写对应的变量:你的模型类名为Post_Model,对应默认变量名为post_model

你在详情页模板中直接使用Post作为变量名取数据,但Post是ListView模板中for循环定义的临时局部变量,不会传递到详情页,因此取不到对应内容。


修复方案

二选一即可:

方案1:修改详情页模板变量(无需改视图代码)

将详情页模板中的变量替换为视图默认传递的变量名即可,两种写法均有效:
写法1,使用通用object变量:

<h1>Article Page</h1><br>

{{ object.Title }}
{{ object.Author }}
{{ object.Body }}

写法2,使用模型对应的默认小写变量名:

<h1>Article Page</h1><br>

{{ post_model.Title }}
{{ post_model.Author }}
{{ post_model.Body }}

方案2:自定义视图上下文变量名(推荐,可读性更好)

在DetailView类中添加context_object_name属性,指定你想在模板中使用的变量名,无需修改原有详情页模板代码。
修改Views.py中的Article_details类:

class Article_details(DetailView):
    model = Post_Model
    template_name = 'June11App/Article.html'
    # 自定义传给模板的模型实例变量名为Post
    context_object_name = 'Post'

额外排查点

检查你的urls.py代码,urlpatterns列表末尾缺少闭合的方括号],该语法问题会导致项目启动报错,记得补全:

urlpatterns = [
    path('', Home_page.as_view(), name="Home"),
    path('Article/<int:pk>/', Article_details.as_view(), name="Article"),
] # 补全闭合方括号

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:21:20