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

Django中DetailView pk传递正常但详情页数据不显示如何解决

问题根因

Django 通用类视图 DetailView 默认传递到模板的上下文变量名不是 data,它默认会为单条查询结果提供两个可用的上下文变量:

  • 通用命名变量 object
  • 模型类名小写的变量,你的模型类是 Laws,因此对应变量为 laws

你在列表页 doc.html 里用的 data 是你自己在 for 循环中自定义的临时变量名,只在循环作用域内有效,和详情页的上下文变量没有关联,因此详情页直接调用 {{ data.judgements }} 会取不到值。

修复方案(二选一即可)

方案1:直接修改详情页模板变量名

把 doc1.html 里的变量改为默认的上下文变量名即可:

<p style="color: black;">{{ object.judgements }}</p>
<!-- 或者用模型小写命名的变量 -->
<p style="color: black;">{{ laws.judgements }}</p>

方案2:自定义上下文变量名(适配你现有的模板代码)

如果你想保留模板里的 data 变量写法,只需要在 views.py 的 Doc1DetailView 中指定 context_object_name 属性:

class Doc1DetailView(DetailView):
    model= Laws
    template_name = 'doc1.html'
    # 新增这行指定上下文变量名
    context_object_name = 'data'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 21:33:03