如何解决这是使用django rest框架将帖子添加到收藏夹的正确方法吗?
我对此功能的Django rest框架有疑问。我已经完成了与普通django网站相同的操作。 有人可以检查一下并告诉我这是否是使用django rest框架执行此操作的正确方法,以便以后可以用于连接到前端。
视图
def favourite_post_api(request,slug):
post = get_object_or_404(Post,slug=slug)
user = request.user
serializer = PostSerializer(post)
if user in post.favourite.all():
post.favourite.remove(user)
return Response("Removed from favourites.",status=status.HTTP_201_CREATED)
else:
post.favourite.add(user)
return Response("Added to favourites.",status=status.HTTP_201_CREATED)
模型
class Post(models.Model):
title = models.TextField(max_length=5000,blank=False,null=False)
image = models.ImageField(upload_to='posts/postimage/',null=True)
post_date = models.DateTimeField(auto_now_add=True,verbose_name="Date Posted")
updated = models.DateTimeField(auto_now_add=True,verbose_name="Date Updated")
likes = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='post_likes',blank=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
slug = models.SlugField(blank=True,unique=True,max_length=255)
favourite = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='post_favourite',blank=True)
谢谢
解决方法
所以,我将向您展示我针对您的情况的处理方式:
views.py
from rest_framework.views import APIView
class PostView(APIView):
bad_request_message = 'An error has occurred'
def post(self,request):
post = get_object_or_404(Post,slug=request.data.get('slug'))
if request.user not in post.favourite.all():
post.favourite.add(request.user)
return Response({'detail': 'User added to post'},status=status.HTTP_200_OK)
return Response({'detail': self.bad_request_message},status=status.HTTP_400_BAD_REQUEST)
def delete(self,slug=request.data.get('slug'))
if request.user in post.favourite.all():
post.favourite.remove(request.user)
return Response({'detail': 'User removed from post'},status=status.HTTP_204_NO_CONTENT)
return Response({'detail': self.bad_request_message},status=status.HTTP_400_BAD_REQUEST)
urls.py
import yourapp.views as views
urlpatterns = [
path('dummy-path/',views.PostView.as_view()),]
您现在需要执行的操作是使用添加用户的json
方法或用户的{"slug": "your_data"}
方法在/dummy-path
网址上向POST
发送DELETE
之类的pdb = ["191L","192L","193L","194L"]
cmd.fetch("190L")
for i in pdb:
cmd.fetch(i)
cmd.align(i,"190L")
删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。