Django模板异常:DetailView无法渲染physicsBlog.body数据
Django DetailView模板无法渲染RichTextField内容的解决办法
问题核心是你在DetailView模板里用了{{ physicsBlog.body }},但Django的DetailView默认不会用这个变量名传递当前文章对象,导致无法读取body内容,而ListView里是遍历列表项,所以能正常访问每个item的属性。
给你两种可行的解决方式:
方式一:修改模板变量名
DetailView默认会将当前文章对象存入object变量,同时也会生成一个模型类名全小写的变量(你的模型是physicsBlog,对应变量名是physicsblog)。把模板里的代码改成以下任意一种即可:
{{ object.body }}
或者
{{ physicsblog.body }}
方式二:显式指定上下文变量名
如果你想继续用physicsBlog作为模板变量名,直接在DetailView类里添加context_object_name属性即可:
修改views.py中的physicsBlogDetailView:
class physicsBlogDetailView(DetailView): model = physicsBlog template_name = 'physics-blog-details.html' context_object_name = 'physicsBlog' # 新增这一行
另外建议先确认数据库中对应文章的body字段确实有内容,排除是空数据导致的不显示问题。
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

