视图集及路由
視圖集是什么?
是一群邏輯操作的功能合集,并采用路由映射的方法進行功能選擇
ModelViewSet
繼承GenericAPIView,并包括用于各種動作實現方式,需要指定數據
1. ModelViewSet視圖集功能及路由映射
# 使用ModelViewSet實現增刪查改操作 from rest_framework.viewsets import ModelViewSet class PeopleViewSet(ModelViewSet):queryset = People.objects.all() # 指定查詢結果集serializer_class = PeopleSerializer2 # 指定序列化器2.路由映射
path('people2/',views.PeopleViewSet.as_view({'get':'list','post':'create'})),path('people2/<int:pk>/',views.PeopleViewSet.as_view({'get':'retrieve','put':'update','delete':'destroy'})),DRF路由映射
簡化路由
DefaultRouter路由生成
功能更強大,訪問路由.json可以直接看到json格式返回
# 1.生成路由對象 router = routers.DefaultRouter() # 2.使用路由對象生成路由 # 參數:1.路徑名 2.調用視圖集 3.給生成的路由起個名 router.register('people3',views.PeopleViewSet,'people3') # 3.路由追加 urlpatterns += router.urls生成的路由
[<URLPattern '^people3/$' [name='people3-list']>, <URLPattern '^people3\.(?P<format>[a-z0-9]+)/?$' [name='people3-list']>, <URLPattern '^people3/(?P<pk>[^/.]+)/$' [name='people3-detail']>,<URLPattern '^people3/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$' [name='people3-detail']>, <URLPattern '^$' [name='api-root']>, <URLPattern '^\.(?P<format>[a-z0-9]+)/?$' [name='api-root']> ]SimplaeRouter路由生成
注冊路由
# 1.生成路由對象 router = routers.SimpleRouter() # 2.使用路由對象生成路由 # 參數:1.路徑名 2.調用視圖集 3.給生成的路由起個名 router.register('people3',views.PeopleViewSet,'people3') # 3.路由追加 urlpatterns += router.urls print(router.urls)生成的路由
[ <URLPattern '^people3/$' [name='people3-list']>, <URLPattern '^people3/(?P<pk>[^/.]+)/$'[name='people3-detail']> ]兩種路由生成方式區別
- SimpleRouter`:最基本的路由映射方式,只會將視圖集具備的混入類功能進行路由的生成
- DefaultRouter:更加高級,包含有drf根頁面的路由,不只是視圖集所包含的視圖部分
總結
- 上一篇: JAVA_SE_Day14
- 下一篇: Unity图集优化原理