[英]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.