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

Django保存文章评论返回404 Page Not Found错误及评论回复功能求助

问题排查(404错误)
  • 外键字段名不匹配:Comment模型中关联Article的外键字段名为post,但视图保存评论时写的是new_comment.article = article_obj,模型不存在article字段,会触发AttributeError。而视图中写了无差别捕获所有异常的except: raise Http404,直接把这个错误转为了404响应。
    修复方式:把赋值语句改为new_comment.post = article_obj
  • 异常捕获逻辑不合理:当前的裸except语句会捕获所有运行时错误(比如字段不存在、表单字段缺失、数据库操作错误等),全部伪装成404错误,非常不利于排查问题。建议仅捕获明确需要处理的异常,删掉通用except语句,调试阶段可以打开Django的DEBUG模式查看真实报错。
  • 权限与字段赋值缺失:需求要求仅登录用户可评论,但当前代码没有登录校验逻辑,也没有给name字段赋值当前登录用户。email字段为必填项,如果CommentForm没有对应字段的默认赋值逻辑,也会触发异常被转为404。建议补充登录校验装饰器@login_required,保存评论时补充new_comment.name = request.user,如果用户邮箱已存储在User模型中可以直接赋值new_comment.email = request.user.email,无需用户手动填写。
评论回复功能快速实现方案
  1. 修改Comment模型,新增父评论关联字段:
class Comment(models.Model):
    post = models.ForeignKey(
        Article, on_delete=models.CASCADE, related_name='comments')
    name = models.ForeignKey(
        User, blank=True, null=True, on_delete=models.SET_NULL)
    email = models.EmailField()
    body = models.TextField()
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)
    # 新增父评论字段,关联自身,null=True表示是一级评论
    parent = models.ForeignKey('self', on_delete=models.CASCADE, related_name='replies', blank=True, null=True)

    class Meta:
        ordering = ['created_on']
  1. 修改视图保存逻辑,处理父评论关联:
if comment_form.is_valid():
    new_comment = comment_form.save(commit=False)
    new_comment.post = article_obj
    new_comment.name = request.user
    new_comment.email = request.user.email
    # 处理回复逻辑
    parent_id = request.POST.get('parent_id')
    if parent_id:
        try:
            new_comment.parent = Comment.objects.get(id=parent_id, active=True, post=article_obj)
        except Comment.DoesNotExist:
            pass
    new_comment.save()
    return redirect(article_obj.get_absolute_url())
  1. 模板层面修改,在每条评论下加回复按钮,点击时将对应评论ID填入表单隐藏的parent_id字段提交。渲染评论时先遍历所有parent=None的一级评论,再嵌套遍历每条一级评论的replies属性展示回复内容即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:15:05