You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.5 KiB
41 lines
1.5 KiB
from django.shortcuts import get_object_or_404, redirect
|
|
from django.http import HttpResponse
|
|
from django.views.decorators.http import require_POST
|
|
from django.contrib.auth.decorators import login_required
|
|
from .models import Comment
|
|
from article.models import Article as BandObject
|
|
from .forms import CommentForm
|
|
|
|
|
|
@require_POST
|
|
@login_required
|
|
def post_comment(request, band_object_id, parent_comment_id=None):
|
|
band_object = get_object_or_404(BandObject, id=band_object_id)
|
|
form = CommentForm(request.POST)
|
|
|
|
if form.is_valid():
|
|
new_comment = form.save(commit=False)
|
|
new_comment.band_object = band_object
|
|
new_comment.commenter = request.user
|
|
|
|
# 二级回复
|
|
if parent_comment_id:
|
|
parent_comment = Comment.objects.get(id=parent_comment_id)
|
|
# 如果超过二级评论,就把他置为二级评论
|
|
new_comment.parent_id = parent_comment.get_root().id
|
|
# 被回复人
|
|
new_comment.reply = parent_comment.commenter
|
|
new_comment.save()
|
|
redirect_url = band_object.get_absolute_url() + '#comment_elem_' + str(new_comment.id)
|
|
return redirect(redirect_url)
|
|
|
|
new_comment.save()
|
|
# 由于评论的数目在不断增加,所以要不断生成新的前端代码块,因此需要定位到锚点可以
|
|
redirect_url = band_object.get_absolute_url() + '#comment_elem_' + str(new_comment.id)
|
|
return redirect(redirect_url)
|
|
else:
|
|
return HttpResponse("表单内容有误,请重新填写。")
|
|
|
|
|
|
|