繁体   English   中英

我想在Django-rest-framework中创建评论功能

[英]I want to create a comment function in django-rest-framework

我想在django-rest-framework中创建一个评论功能,这是我在views.py中的功能

def postdetail(request,id):
   postt = get_object_or_404(post,id=id)
   comments = Comment.objects.filter(post=postt,reply=None).order_by('-id')
   is_liked = False
   if postt.like.filter(id=request.user.id).exists():
       is_liked = True
   if request.method == 'POST':
       comment_form = CommentForm(request.POST or None)
       if comment_form.is_valid():
          content = request.POST.get('content')
          reply_id = request.POST.get('comment_id')
          comment_qs = None
          if reply_id:
             comment_qs = Comment.objects.get(id=reply_id)
          comment =  Comment.objects.create(post=postt,user=request.user,content=content,reply=comment_qs)
        comment.save()

        # return HttpResponseRedirect(postt.get_absolute_url())
    else:
       comment_form = CommentForm()

context = {
  'post': postt,
  'is_liked': is_liked,
  'total_likes':postt.total_likes(),
  'comments':comments,
  'comment_form':comment_form,
}
if request.is_ajax():
    html = render_to_string('comments.html',context,request=request)
    return JsonResponse({'form':html})

return render(request,'detail.html', context)

models.py

class Comment(models.Model):
post  = models.ForeignKey(post,on_delete=models.CASCADE)
user  = models.ForeignKey(User,on_delete=models.CASCADE)
content = models.TextField()
reply = models.ForeignKey('Comment', null=True, related_name="replies",on_delete=models.CASCADE)
creat_date   =     models.DateTimeField(default=timezone.now)


def __str__(set):
    return '{}-{}'.format(set.post.title,str(set.user.username))

我想在django-rest-framework中创建评论功能,将帖子链接对我有帮助吗?

对您的注释模型使用模型序列化器。

例如

from rest_framework import serializers, generics

class CommentSerializer(serializers.ModelSerializer):
    class Meta:
         model = Comment
         fields = ... # fields you'd like to include

''' API Endpoints '''
class CommentCreate(generics.CreateAPIView):
     queryset = Comment.objects.all()
     serializer_class = CommentSerializer

您可以将这些类附加到url,然后发布一些包含帖子ID和用户ID等的数据。例如:

curl -X POST -d '{ SOME DATA }' http://localhost:8000/api/....

请参阅: 文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM