DRF mixins 的常用方法
DRF mixins 常用的操作
-
GenericAPIView
-
继承自APIVIew,增加了对于列表视图和详情视图可能用到的通用支持方法,queryset为列表视图的查询集,serializer_class为视图使用的序列化器
-
代码块
class TeacherView(ListModelMixin,GenericAPIView): queryset = models.Teacher.objects.all() serializer_class = TeacherSerializer
-
-
ListModelMixin
-
列表视图扩展类,提供list(request, *args, ** kwargs)方法快速实现列表视图,返回200状态码,该Mixin的list方法会对数据进行过滤和分页
-
serializers.py
# 老师类的序列化 class TeacherSerializer(serializers.ModelSerializer): class Meta: model = models.Teacher fields = '__all__'
-
views.py
class TeacherView(ListModelMixin,GenericAPIView): queryset = models.Teacher.objects.all() serializer_class = TeacherSerializer def get(self,request,*args,**kwargs): return self.list(request,*args,**kwargs)
-
urls.py
path('teacher/',views.TeacherView)
-
如图
-
-
UpdateModelMixin
-
更新视图扩展类,提供update(request, *args, **kwargs)方法,可以快速实现更新一个存在的数据对象。
同时也提供partial_update(request, *args, **kwargs)方法,可以实现局部更新。
成功返回200,序列化器校验数据失败时,返回400错误。 -
serializers.py
# 老师类的序列化 class TeacherSerializer(serializers.ModelSerializer): name = serializers.CharField(max_length=32) class Meta: model = models.Teacher fields = '__all__'
-
views.py
class TeacherOtherView(GenericAPIView,UpdateModelMixin): queryset = models.Teacher.objects.all() serializer_class = TeacherSerializer def put(request,*args,**kwargs): return self.update(request,*args,**kwargs)
-
urls.py
re_path(r'teacher/(?P<pk>\d+)/$',views.TeacherOtherView.as_view())
-
如图
-
-
DestroyModelMixin
-
删除视图扩展类,提供destroy(request, *args, **kwargs)方法,可以快速实现删除一个存在的数据对象。成功返回204,不存在返回404
-
serializers.py
class TeacherSerializer(serializers.ModelSerializer): class Meta: model = models.Teacher fields = '__all__'
-
views.py
class TeacherOtherView(GenericAPIView,DestroyModelMixin): queryset = models.Teacher.objects.all() serializer_class = TeacherSerializer def delete(request,*args,**kwargs): return self.destroy(request,*args,**kwargs)
-
urls.py
re_path(r'teacher/(?P<pk>\d+)/$',views.TeacherOtherView.as_view())
-
如图
-
-
RetrieveModelMixin
-
详情视图扩展类,提供retrieve(request, *args, **kwargs)方法,可以快速实现返回一个存在的数据对象。如果存在,返回200, 否则返回404
-
serializers.py
class TeacherSerializer(serializers.ModelSerializer): class Meta: model = models.Teacher fields = '__all__'
-
views.py
class TeacherOtherView(GenericAPIView,RetrieveModelMixin): queryset = models.Teacher.objects.all() serializer_class = TeacherSerializer def get(self,request,*args,**kwargs): return self.retrieve(request,*args,**kwargs)
-
urls.py
re_path(r'teacher/(?P<pk>\d+)/$',views.TeacherOtherView.as_view())
- 如图
- 如图
-
-
CreateModelMixin
-
创建视图扩展类,提供create(request, *args, **kwargs)方法快速实现创建资源的视图,成功返回201状态码。如果序列化器对前端发送的数据验证失败,返回400错误。
-
serializers.py
# 老师类的序列化 class TeacherSerializer(serializers.ModelSerializer): name = serializers.CharField(max_length=32) class Meta: model = models.Teacher fields = '__all__'
-
views.py
class TeacherView(GenericAPIView,CreateModelMixin): queryset = models.Teacher.objects.all() serializer_class = TeacherSerializer # 添加数据 def post(self,request,*args,**kwargs): return self.create(request,*args,**kwargs)
-
urls.py
path('teacher/',views.TeacherView.as_view())
-
如图
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端