# comments/views.py # DZQ: 评论模块的视图函数文件,处理评论相关的HTTP请求 from django.shortcuts import get_object_or_404, redirect from django.contrib.auth.decorators import login_required from django.contrib import messages from .models import Comment from .forms import CommentForm from blog.models import Post # DZQ: 添加评论视图函数 - 处理用户提交评论的请求 @login_required # DZQ: 登录要求装饰器,确保只有登录用户才能发表评论 def add_comment(request, post_id): """添加评论""" # DZQ: 获取指定ID且状态为已发布的文章,如果不存在则返回404错误 post = get_object_or_404(Post, id=post_id, status='published') # DZQ: 只处理POST请求,GET请求直接重定向 if request.method == 'POST': # DZQ: 实例化评论表单,传入POST数据 form = CommentForm(request.POST) # DZQ: 表单验证通过的处理逻辑 if form.is_valid(): # DZQ: commit=False表示先不保存到数据库,允许设置额外字段 comment = form.save(commit=False) comment.post = post # DZQ: 设置评论关联的文章 comment.author = request.user # DZQ: 设置评论作者为当前登录用户 comment.save() # DZQ: 将评论保存到数据库 # DZQ: 添加成功消息,将在下次请求时显示给用户 messages.success(request, '评论发表成功!') else: # DZQ: 表单验证失败,添加错误消息 messages.error(request, '评论发表失败,请检查输入内容。') # DZQ: 重定向回文章详情页面,无论评论成功与否都返回文章页面 return redirect('detail', post_id=post_id)