Django rest-auth中的create方法和perform_create方法有什么区别?

19

我正在使用Django的rest-auth包。我有一个继承了rest-authRegisterView类的类,其中包含两个方法:createperform_create。这两个方法有什么区别?


我想你已经得到了答案。 - Anoop Kumar
谢谢。如需更多信息,您可以在YouTube上查看教程https://www.youtube.com/watch?v=ekhUhignYTU&index=7&list=PL1WVjBsN-_NJ4urkLt7iVDocVu_ZQgVzF - Anoop Kumar
1个回答

38

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 {}

5
恰当的用户名 - GluePear

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接