Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这是使用django rest框架向收藏夹添加帖子的正确方法吗?_Django_Django Models_Django Rest Framework_Django Views - Fatal编程技术网

这是使用django rest框架向收藏夹添加帖子的正确方法吗?

这是使用django rest框架向收藏夹添加帖子的正确方法吗?,django,django-models,django-rest-framework,django-views,Django,Django Models,Django Rest Framework,Django Views,我对这个函数的django rest框架有疑问。我在一个普通的django网站上也是这样做的。 有人可以检查并告诉我这是否是使用django rest框架的正确方法,以便以后可以使用它连接到前端 看法 模型 谢谢因此,我将向您展示我对您案例的处理方法: views.py from rest_framework.views import APIView class PostView(APIView): bad_request_message = 'An error has occurr

我对这个函数的django rest框架有疑问。我在一个普通的django网站上也是这样做的。 有人可以检查并告诉我这是否是使用django rest框架的正确方法,以便以后可以使用它连接到前端

看法

模型


谢谢

因此,我将向您展示我对您案例的处理方法:

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, request):
        post = get_object_or_404(Post, 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)
url.py

import yourapp.views as views

urlpatterns = [
    path('dummy-path/', views.PostView.as_view()),
]

您现在需要做的是使用添加用户的
POST
方法或删除用户的
DELETE
方法在
/dummy path
url上发送一个
json
{“slug”:“您的数据”}

嘿,实际上上面的代码在postman中没有任何错误。但是我想知道这是否是正确的方法….?你能和我们分享
Post
模型吗?我们需要更多的信息,但是你就快到了。你好,我已经用模型更新了这个问题。谢谢你的回复。但是删除和发布功能应该有两个单独的URL吗?好的。让我试试,然后再打给你。谢谢!不客气。您可以通过创建单元测试来测试该端点,您可以看到它在使用像wow这样的应用程序时工作。谢谢。我以前从来都不知道这些。
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, request):
        post = get_object_or_404(Post, 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)
import yourapp.views as views

urlpatterns = [
    path('dummy-path/', views.PostView.as_view()),
]