代码之家  ›  专栏  ›  技术社区  ›  GluePear

在django rest auth[duplicate]中,create和perform的create方法有什么区别?

  •  1
  • GluePear  · 技术社区  · 6 年前

    我用的是姜戈 rest-auth 包裹。我有一个扩展的类 安特奥斯 RegisterView 包含两种方法, create perform_create . 这两种方法有什么区别?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Pythonista    6 年前

    perform_create 在中调用 create 方法调用序列化程序以在已知序列化有效后进行创建。明确地, serializer.save()

    源代码-如果有疑问,请检查:

    class CreateModelMixin(object):
        """
        Create a model instance.
        """
        def create(self, request, *args, **kwargs):
            serializer = self.get_serializer(data=request.data)
            serializer.is_valid(raise_exception=True)
            self.perform_create(serializer)
            headers = self.get_success_headers(serializer.data)
            return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
    
        def perform_create(self, serializer):
            serializer.save()
    
        def get_success_headers(self, data):
            try:
                return {'Location': str(data[api_settings.URL_FIELD_NAME])}
            except (TypeError, KeyError):
                return {}