def ajax_reply(request, comment_id): """ajax请求回复评论""" reply_form = ReplyForm(request.POST) if reply_form.is_valid(): reply_form.instance.comment_id = comment_id reply_form.instance.user_id = request.session['user']['id'] reply_form.save() # 文章的评论数+1 comment = Comment.objects.get(id=comment_id) Article.objects.filter(id=comment.article_id).update( comment_count=F('comment_count') + 1) # 创建回复通知 article = Article.objects.get(id=comment.article_id) article_title = article.title if len(article_title) > 10: article_title = article_title[:7] + '...' comment_content = comment.content if len(comment_content) > 10: comment_content = comment_content[:7] + '...' reply_content = reply_form.instance.content if len(reply_content) > 10: reply_content = reply_content[:7] + '...' context = { 'article_id': article.id, 'article_title': article_title, 'comment_id': comment.id, 'comment_content': comment_content, 'reply_content': reply_content } Notice.objects.create( sender_id=request.session['user']['id'], receiver_id=article.user.id, type=NoticeType.objects.get(name=NoticeType.REPLY_NOTICE), context=json.dumps(context)) return HttpResponse('true')
def post(self, request): rf = ReplyForm(request.POST) comment = Comment.objects.get(id=request.POST['comment']) user = User.objects.get(id=request.POST['author']) if user.username == request.user.username: if rf.is_valid(): rf.save() return redirect('post_details', slug=comment.post.slug)
def test_reply_form_is_not_valid_when_blank_data(self): reply_form = ReplyForm({}) self.assertFalse(reply_form.is_valid()) reply_form = CommentForm({ "name": "Someone", }) self.assertFalse(reply_form.is_valid()) self.assertEqual( reply_form.errors, { 'email': ['This field is required.'], 'comment': ['This field is required.'], })
def test_reply_form_is_valid_when_valid_data(self): comment = self.comment reply_form = ReplyForm({ "name": "Someone", "email": "*****@*****.**", "comment": "I am a reply", "parent_comment": comment }) self.assertTrue(reply_form.is_valid()) reply = reply_form.save() self.assertEqual(reply.name, "Someone") self.assertEqual(reply.email, "*****@*****.**") self.assertEqual(reply.comment, "I am a reply")