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

Django通过slug获取模型实例后无法在模板渲染属性的问题

问题根因

视图函数中传递给模板的context字典键值对写反了。
Django的render函数上下文传参规则为:字典的键是模板中可直接调用的变量名称,字典的值是需要传递给模板的实际数据。你当前写法{details: 'details'}是把查询到的文章实例作为字典键,把字符串'details'作为传递值,模板中自然找不到名为details的实例变量,无法读取属性。

修复方案

修改views.py中上下文的键值对应关系即可:

def post_details(request, slug):
    details = get_object_or_404(article, slug=slug)
    context = {
        'details': details
    }
    return render(request, 'post_details.html', context)
可选规范优化
  • 按照Python编码规范,模型类名建议使用大驼峰命名,可将class article调整为class Article,避免后续开发出现命名识别问题
  • 你贴出的模型代码中,字段定义没有和类保持正确缩进,实际运行会触发语法错误,记得补充缩进,参考写法:
class article(models.Model):
    title = models.CharField(max_length=200)
    content = RichTextUploadingField()
    slug = models.SlugField(unique=True, max_length=200)

    def __str__(self):
        return self.title

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:48:10