首页 > 其他 > 详细

调用多个序列化器

时间:2019-12-28 14:10:46      阅读:90      评论:0      收藏:0      [点我收藏+]

调用多个序列化器类问题

调用序列化器类需要用到框架中封装好的一个方法get_serialzier_class来实现

一、视图集中调用

1. view.py

技术分享图片View Code

2. urls.py

1 urlpatterns = [
2     path(‘student5/‘, views.Studnet1GenericAPIView.as_view()),    
3 ]

 

二、视图集中调用

1. view.py

 1 # 视图集中调用多个序列化器类
 2 from rest_framework.viewsets import ModelViewSet
 3 class StudentModelViewSet(ModelViewSet):
 4     queryset = Student.objects.all()
 5     serializer_class = Student1GenericAPIView
 6     def get_serializer_class(self):
 7         if self.action == ‘list‘:
 8             # 注意:这里直接是在self下的action属性进行判断,
 9             # 这里不能添加request,因为它不具备actin属性
10             return StudentModelSerializer
11         else:
12             return Student1ModelSerializer

2. urls.py

 1 urlpatterns = [
 2     path(‘student6/‘, views.StudentModelViewSet.as_view({‘get‘:     ‘list‘})),
 3     path(‘student6/<int: pk>‘, views.StudentModelViewSet.as_view({‘get‘: ‘retrieve‘})),
 4 ]
 5 # 实例化路由类
 6 # 视图类默认只会给视图集中的基本api接口生成地(生成一条、生成多条、更新一条、删除一条、添加一条数据)
 7 # 我们自己编写的处理方法名(例如:get_10等),视图类并不会生成地址
 8 from rest_framework.routers import SimpleRouter, DefaultRouter
 9 router = DefaultRouter()
10 # 注册视图集类
11 router.register(‘student6‘, views.StudentModelViewSet)
12 # 把注册好的视图类拼接到urlpatterns中
13 urlpatterns += router

三、脑图

技术分享图片

调用多个序列化器

原文:https://www.cnblogs.com/ddzc/p/12111395.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!