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

Django博客详情页content字段显示异常问题咨询

Django博客详情页content字段展示问题解决方案

问题根源

你用{% for i in blog.content_set.all %}是完全错误的用法——content_set.all()是Django中反向查询关联模型的语法,只有当Content是一个独立模型且通过外键关联到Blog时才会生效。但你的场景是content是Blog模型自身的字段,根本不需要循环迭代。

分步解决

1. 确认Blog模型的content字段定义

确保你的Blog模型中content是直接定义的字段(比如TextField或富文本字段),而非关联模型:

# models.py
from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length=200)
    # 正确的单字段定义,不是关联模型
    content = models.TextField(verbose_name="博客内容")
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

2. 确保详情页视图传递正确的Blog对象

视图要通过主键或slug获取单个Blog实例,传递给模板:

# views.py
from django.shortcuts import get_object_or_404, render
from .models import Blog

def blog_detail(request, blog_id):
    # 获取指定ID的博客,不存在则返回404
    blog = get_object_or_404(Blog, pk=blog_id)
    return render(request, "blog/detail.html", {"blog": blog})

3. 修正详情页模板代码

直接输出blog.content字段即可,不需要循环:

<!-- templates/blog/detail.html -->
<h1>{{ blog.title }}</h1>
<p class="date">{{ blog.created_at }}</p>
<!-- 直接展示content字段内容 -->
<div class="blog-content">
    {{ blog.content }}
</div>

4. 富文本内容的特殊处理

如果你的content字段存储的是HTML格式的富文本(比如用了富文本编辑器),需要添加|safe过滤器让Django渲染HTML标签:

<div class="blog-content">
    {{ blog.content|safe }}
</div>

额外检查

  • 确认URL配置正确,详情页URL能正确传递blog_id参数到视图
  • 检查后台管理中是否已正确填写Blog的content字段内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 09:12:50