STUNUM

面有萌色,胸有丘壑。心有猛虎,细嗅蔷薇。

嗨,我是王鑫 (@stunum),一名 Python 开发者。


Python web开发,后端以Django框架为主,前端使用Vue.js...

rest_framework源码之generics

generics

generics.py 文件中的类:

  • GenericAPIView
  • CreateAPIView
  • ListAPIView
  • RetrieveAPIView
  • DestroyAPIView
  • UpdateAPIView

以及从mixins.py引入的 5 个重要的类:

  • mixins.CreateModelMixin
  • mixins.ListModelMixin
  • mixins.RetrieveModelMixin
  • mixins.UpdateModelMixin
  • mixins.DestroyModelMixin

GenericAPIView 这个类继承自 APIView 所以里面的东西基本上就是使用父类的以及个别新的方法。

  • get_queryset方法:获得 queryset 对象,可以通过定义类中queryset属性来更改。重写该方法,更具不同的请求来返回不同的 queryset 对象
  • get_serializerget_serializer_contextget_serializer_class方法:获得指定的serializer类,可以通过定义类中的serializer_class属性来更改,
  • filter_queryset方法:过滤
  • paginatorpaginate_querysetget_paginated_response方法:分页

generics.py中的其他类通过继承GenericAPIView类和mixins中的类并定义的与 http 请求对应的方法,然后返回mixins.py中的各个类的方法来实现对应的效果。

我们也可以自己通过继承组合的方式来定义需要的 APIView.

最近的文章

celery的学习使用

Celery 是一个专注于实时处理和任务调度的分布式任务队列, 同时提供操作和维护分布式系统所需的工具.. 所谓任务就是消息, 消息中的有效载荷中包含要执行任务需要的全部数据. Celery 是一个分布式队列的管理工具, 可以用 Celery 提供的接口快速实现并管理一个分布式的任务队列. Celery 本身不是任务队列, 是管理分布式任务队列的工具. 它封装了操作常见任务队列的各种操作, 我们使用它可以快速进行任务队列的使用与管理. Celery 架构图 安装 Celer...…

水滴石穿继续阅读
更早的文章

rest_framework源码之APIView

APIView 类中很最要的一个方法:dispatch该方法中有两个需要注意的关键点: request 替换 http 请求映射类中的对应名称的方法def dispatch(self, request, *args, **kwargs): self.args = args self.kwargs = kwargs request = self.initialize_request(request, *args, **kwargs) self.request = ...…

水滴石穿继续阅读