我们可以将serializer_class属性与APIView(django rest framework)一起使用吗?

时间:2016-08-27 21:29:44

标签: python django django-views django-rest-framework

根据DRF文档,在使用GenericAPIView时应设置serializer_class属性。但是为什么serializer_class属性甚至可以与APIView一起使用?这是我的API代码:

class UserView(APIView):

    serializer_class = SignupSerializer

    @transaction.atomic
    def post(self, request):
        email = get_data_param(request, 'email', None)
        password = get_data_param(request, 'password', None)

        params = request.POST.copy()
        params["username"] = email

        serializer = UserSerializer(data=params)
        if serializer.is_valid(raise_exception=True):
            user = serializer.save()
            user.set_password(password)
            user.save()
            params["user"] = user.id

        serializer = CustomProfileSerializer(data=params)
        if serializer.is_valid(raise_exception=True):
            profile = serializer.save()
            return Response(response_json(True, profile.to_dict(), None))

class SignupSerializer(serializers.Serializer):
    email = serializers.EmailField(max_length=100)
    password = serializers.CharField(max_length=50)

当我在浏览器中浏览此API时,它确实显示了电子邮件和密码字段作为输入,但如果我没有设置此serializer_class属性,则不会显示任何输入字段。理想情况下,此serializer_class属性不适用于APIView。我搜索了很多,但没有任何相关的内容。

任何人都可以提供此行为的解释吗?谢谢。

0 个答案:

没有答案