这是使用django rest框架向收藏夹添加帖子的正确方法吗?
我对这个函数的django rest框架有疑问。我在一个普通的django网站上也是这样做的。 有人可以检查并告诉我这是否是使用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
谢谢因此,我将向您展示我对您案例的处理方法: 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()),
]