views.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from django.shortcuts import render, get_object_or_404, redirect
  2. from django.http import HttpResponse
  3. from django.contrib.auth.decorators import login_required
  4. from article.models import ArticlePost
  5. from .forms import CommentPost
  6. from .models import Comment
  7. @login_required(login_url='/user/login')
  8. def post_comment(request, article_id, parent_comment_id=None):
  9. article = get_object_or_404(ArticlePost, id=article_id)
  10. if request.method == 'POST':
  11. comment_form = CommentPost(data=request.POST)
  12. if comment_form.is_valid():
  13. new_comment_form = comment_form.save(commit=False)
  14. new_comment_form.article = article
  15. new_comment_form.user = request.user
  16. # 二级回复
  17. if parent_comment_id:
  18. parent_comment = Comment.objects.get(id=parent_comment_id)
  19. # 若回复层级超过二级,则转换为二级
  20. new_comment_form.parent_id = parent_comment.get_root().id
  21. # 被回复人
  22. new_comment_form.reply_to = parent_comment.user
  23. new_comment_form.save()
  24. return HttpResponse('200 OK')
  25. new_comment_form.save()
  26. return redirect(article)
  27. else:
  28. return HttpResponse('表单有错误,请重新填写')
  29. elif request.method == 'GET':
  30. comment_form = CommentPost()
  31. context = {
  32. 'comment_form': comment_form,
  33. 'article_id': article_id,
  34. 'parent_comment_id': parent_comment_id
  35. }
  36. return render(request, 'comment/reply.html', context)
  37. else:
  38. return HttpResponse('发表评论仅接受GET/POST请求')