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回答

bobby

2019-02-13

  1. get_queryset()方法运行你覆盖默认的queryset=XX.objects.all()你拦截这个方法就可以自己写逻辑去返回queryset对象了,比如你想让用户传递参数过来过滤数据

  2. get_object是用来应对RetrieveModelMixin这种因为你需要知道修改的或者获取的是哪一条数据的信息

  3. get_serializer_class是用来获取你定义的serializer_class,覆盖这个方法你就可以动态制定序列化类了

  4. get_serializer让你可以给序列化类传递参数进去

  5. get_serializer_context你可以看看这个源码 //img.mukewang.com/szimg/5c63eca900017e2305790243.jpg 这里就是默认传递了一些参数给serializer_class而已

0
2
bobby
回复
大梦想家豪哥
好的,
2019-02-15
共2条回复

Python前后端分离开发Vue+Django REST framework实战

Django REST framework课程视频,RESTFul API前后端分离开发

2873 学习 · 2457 问题

查看课程