创建重载的问题

Posted yuanoung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建重载的问题相关的知识,希望对你有一定的参考价值。

正确的写法:

class CategoriesView(generics.ListCreateAPIView):
    queryset = Category.objects.all()
    serializer_class = CategorySerializers
    permission_classes = (IsAuthenticated,)

    def create(self, request, *args, **kwargs):
        if self.queryset.filter(category=request.data.get("category").upper()).exists():
            return Response(status=status.HTTP_201_CREATED)
        return super(CategoriesView, self).create(request, *args, **kwargs)

下面的这种写法:

class CategoriesView(generics.ListCreateAPIView):
    queryset = Category.objects.all()
    serializer_class = CategorySerializers
    permission_classes = (IsAuthenticated,)

    def post(self, request, *args, **kwargs):
        if self.queryset.filter(category=request.data.get("category").upper()).exists():
            return Response(status=status.HTTP_201_CREATED)
        return super(CategoriesView, self).create(request, *args, **kwargs)

会出现serializer = self.get_serializer(data=request.data)报错,提示说request不存在data属性。request参数在post中时正常的,但是在调用super(CategoriesView, self).create(request, *args, **kwargs)时,request参数的外面,django再次包裹了一次request,所以导致data属性不存在。

以上是关于创建重载的问题的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE 方法的使用

类外功能重载未见

Java基础之方法的调用重载以及简单的递归

对Java方法方法重载的理解

创建片段而不从 java 代码实例化它

微信小程序代码片段