Django通用DetailView无法显示文章数据,请求技术支持
问题分析与解决
你的问题核心是Django DetailView的上下文变量名称不匹配。Django的DetailView默认会将查询到的对象以模型类名的小写形式(也就是article)传递给模板,但你在article_detail_view.html里用的是post,导致模板无法获取到数据。
有两种解决方式,任选其一即可:
方式一:修改模板变量名
直接把article_detail_view.html里的post替换为article:
<h2>Article Detail View</h2> <h2>{{article.title}} By {{ article.author }}</h2></br> <p>{{article.body}}</p>
方式二:在视图中指定上下文变量名
在ArticleDetailView类里添加context_object_name属性,明确指定模板使用的变量名:
class ArticleDetailView(DetailView): model = Article template_name = 'article_detail_view.html' context_object_name = 'post' # 新增该行代码
额外检查项:
- 确认数据库中已存在对应的Article数据
- 点击首页文章链接时,URL格式是否正确(例如
article/1这类带有效pk的路径)
内容的提问来源于stack exchange,提问作者man980
相关产品推荐
相关产品推荐

