这是使用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") 删除。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...