201与204
201为创建成功状态码
204为删除成功状态码
@swagger_auto_schema(
operation_summary="取消收藏",
request_body=FavoritesDeleteSerializer,
responses={
"204": "OK",
},
operation_description="取消收藏",
)
@action(methods=["post"], detail=True, url_path="cancel-favorites")
def cancel_favorites(self, request, *args, **kwargs):
knowledge_obj = self.get_object()
create_user_id = request.user.id
Favorites.objects.filter(
id=knowledge_obj.id, create_user_id=create_user_id
).delete()
return Response(status=status.HTTP_200_OK)
@swagger_auto_schema(
operation_summary="收藏知识",
request_body=FavoritesDeleteSerializer,
responses={
"201": FavoritesDeleteSerializer(many=True),
},
operation_description="收藏知识",
)
@action(methods=["post"], detail=True, url_path="favorites")
def create_favorites(self, request, *args, **kwargs):
knowledge_obj = self.get_object()
serializer = FavoritesModelSerializer(data={"knowledge_id": knowledge_obj.id})
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
在上述代码中,收藏是创建收藏对象,但是这里的Favorites是一张关系表,所以在此不需要关系是否创建成功,又因为是使用的post方法,在post方法中一般返回200、201状态码,在这里不使用201故使用200状态码
取消收藏是删除对象,删除应该使用204状态码,但是这里使用的是post方法应该返回200、201状态码,又因为201是创建成功的状态码,所以不可以使用,在此使用200状态码