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
相关产品推荐
相关产品推荐

