视图集
#视图集
# ViewSetMixin:重写了as_view
# ViewSet: 继承ViewSetMixin和APIView
# GenericViewSet:继承ViewSetMixin, generics.GenericAPIView
# ModelViewSet:继承mixins.CreateModelMixin,mixins.RetrieveModelMixin,mixins.UpdateModelMixin,mixins.DestroyModelMixin,mixins.ListModelMixin,GenericViewSet
# ReadOnlyModelViewSet:继承mixins.RetrieveModelMixin,mixins.ListModelMixin,GenericViewSet
# 只要继承了ViewSetMixin类 # 路由配置:path('books_mix/', views.BookView.as_view({'get':'lqz'})) # 视图类的方法中就会有个action class BookView(ViewSet): def lqz(self,request,*args,**kwargs): print(self.action) return Response('lqz') # ViewSetMixin以后只要继承它,路由的配置就发生变化了,只需要写映射即可 # action -当自动生成路由的时候,由于视图类中还有其它方法,是无法自动生成路由的 -加action装饰器: -methods:什么请求方式会触发被装饰函数的执行 -detail:是True是基于带id的路由生成的,如果是False,是基于不带id的路由生成的 -@action(methods=['get'], detail=True)
# 自动生成路由 # SimpleRouter # DefaultRouter # 继承了ViewSetMixin的视图类,以后写路由,可以自动生成 from rest_framework import routers # 实例化得到一个对象 router = routers.SimpleRouter() # 注册进路由 router.register('books', views.BookSetView) # 把自动生成的路由配置到urlpatterns中 -urlpatterns += router.urls -re_path(r'v1/', include(router.urls)) # 配置路由的方式 -最原始的 -path('books/', views.BookAPIView.as_view()), -ViewSetMixin的视图类 -path('books_set/', views.BookSetView.as_view({'get':'list','post':'create'})) -ViewSetMixin的视图类 -自动生成,上面讲的 # action -当自动生成路由的时候,由于视图类中还有其它方法,是无法自动生成路由的 -加action装饰器: -methods:什么请求方式会触发被装饰函数的执行 -detail:是True是基于带id的路由生成的,如果是False,是基于不带id的路由生成的 -@action(methods=['get'], detail=True)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南