GenericAPIView的源码
来源:1-1 课程导学
大梦想家豪哥
2019-02-13
我是在看RetrieveModelMixin类的retrieve方法的时候遇到了不懂的地方,这是retrieve方法的源码:
def retrieve(self, request, *args, **kwargs): instance = self.get_object() serializer = self.get_serializer(instance) return Response(serializer.data)
我不懂是很懂(似懂非懂)该方法中的三行代码分别是什么意思。
我知道get_object()和get_serializer()都是的GenericAPIView中的方法,点进去看发现get_object()又调用了get_queryset()和filter_queryset(),get_serializer()又调用了get_serializer_class()和get_serializer_context()。
上面提到的6个方法都是GenericAPIView中的方法,所以我想请问一下,GenericAPIView中的get_queryset()、get_object()、get_serializer()、get_serializer_class()、get_serializer_context()和filter_queryset()分别有什么功能。
1回答
-
get_queryset()方法运行你覆盖默认的queryset=XX.objects.all()你拦截这个方法就可以自己写逻辑去返回queryset对象了,比如你想让用户传递参数过来过滤数据
get_object是用来应对RetrieveModelMixin这种因为你需要知道修改的或者获取的是哪一条数据的信息
get_serializer_class是用来获取你定义的serializer_class,覆盖这个方法你就可以动态制定序列化类了
get_serializer让你可以给序列化类传递参数进去
get_serializer_context你可以看看这个源码 这里就是默认传递了一些参数给serializer_class而已
022019-02-15
Python前后端分离开发Vue+Django REST framework实战
2873 学习 · 2457 问题
相似问题