Django基于框架类的Views中的默认方法执行顺序(例如: - POST vs perform_create)

时间:2016-05-17 05:48:21

标签: django django-rest-framework

我正在学习DRF,我已经使用mixins和GenericView来创建View。我想要理解的是,这些方法的执行顺序是什么?

假设我正在创建这样的视图。

class MyView(mixins.CreateModelMixin, generics.ListCreateAPIView):
    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)
    def perform_create(self...):
        ....(some code)

那么,对于POST请求,首先执行哪个方法,为什么?当我实际尝试这个时,perform_create首先被执行,我想要理解为什么POST没有先被执行。

我确信我在这里遗漏了一些东西,如果可能的话,我正在寻找一些关于此的文件。

1 个答案:

答案 0 :(得分:0)

Viewset的post方法只调用CreateMixin的create方法,该方法从HTTP POST方法获取请求中的数据,然后序列化并验证数据,然后调用perform_create,这实际上创建了模型对象并将其写入数据库。

你可以在这里看到它: https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/mixins.py

在这里: https://github.com/tomchristie/django-rest-framework/blob/master/rest_framework/viewsets.py