DRF,自定義ROUTER類,動態生成路由,禁用drf預設的SimpleRouter七個curd介面路由
現狀
最近的專案是用DRF框架實現後端的介面,檢視果斷使用modelviewset,而DRF預設的兩個路由生成類routers.SimpleRouter和DefaultRouter,都會預設生成CURD七個介面的路由,專案不需要這些路由,所以決定自己實現一下Router,很簡單,繼承SimpleRouter重寫類屬性routes即可
程式碼
from rest_framework import routers
class CustomRouter(routers.SimpleRouter):
"""
自定義的動態路由生成類,用於動態生成viewset中detail=False的介面路由,且不生成DRF原生CURD介面預設生成的路由和detail=True的路由
配合DRF的ModelViewSet實現CBV的介面
"""
routes = [
# Dynamically generated list routes. Generated using
# @action(detail=False) decorator on methods of the viewset.
routers.DynamicRoute(
url=r'^{prefix}/{url_path}{trailing_slash}$',
name='{basename}-{url_name}',
detail=False,
initkwargs={}
),
]
呼叫
from rest_framework.viewsets import ModelViewSet
from rest_framework.decorators import action
class TestViewSet(ModelViewSet):
@action(methods=['post'], detial=False)
def dev(self, request, *args, **kwargs):
pass
@action(methods=['get'], detial=False, url_path='test')
def testing(self, request, *args, **kwargs):
pass
# urls.py # 如下配置,只生成test_view/dev 和test_view/test 兩個路由
router = CustomRouter()
router.register(r'test_view', TestViewSet, basename='test_view')
urlpatterns = [] + router.urls
相關文章
- DRF 自動生成介面文件
- 【DRF-12】rest-framework之路由RESTFramework路由
- vue router路由自定義後退事件Vue路由事件
- Django(74)drf-spectacular自動生成介面文件Django
- vue router路由自定義後退事件,並通知下個路由為後退Vue路由事件
- 【Django】DRF自定義異常處理Django
- 在.NET 6.0中自定義介面路由路由
- React Router、And、Redux動態選單和動態路由ReactRedux路由
- Flutter利用註解生成可自定義的路由Flutter路由
- DRF內建許可權元件之自定義許可權管理類元件
- 靜態路由和動態路由路由
- 路由器基礎介紹,及配置靜態路由,預設路由路由器
- WPF自定義路由事件路由事件
- 淺談Vue-router使用方法及動態路由和巢狀路由的使用Vue路由巢狀
- 靜態路由和動態路由的比較路由
- drf檢視類總結
- Vue | 自定義指令和動態路由實現許可權控制Vue路由
- Vue-Router學習第二彈動態路由\懶載入\巢狀路由Vue路由巢狀
- drf : 請求(Request)與響應(Response),全域性設定和區域性設定drf的預設配置項。
- day74:drf:drf其他功能:認證/許可權/限流/過濾/排序/分頁/異常處理&自動生成介面文件排序
- zuul 自定義路由規則Zuul路由
- DRF內建認證元件之自定義認證系統元件
- 【Django drf】檢視類APIView之五層封裝 ApiView的類屬性 drf配置檔案DjangoAPIView封裝
- DRF之排序類原始碼分析排序原始碼
- DRF之分頁類原始碼分析原始碼
- drf JWT認證模組與自定製JWT
- Vue之動態路由、巢狀路由Vue路由巢狀
- vue 路由vue RouterVue路由
- springboot+zuul(一)------實現自定義過濾器、動態路由、動態負載。Spring BootZuul過濾器路由負載
- wordpress 自定義路由及展示頁路由
- Flask動態路由Flask路由
- drf快速使用 CBV原始碼分析 drf之APIView分析 drf之Request物件分析原始碼APIView物件
- vue router 引入多個路由檔案Vue路由
- DRF-模型類序列化器模型
- DRF之過濾類原始碼分析原始碼
- PHP中的自定義路由使用小結PHP路由
- 如何改動路由器預設的地址路由器
- Django(63)drf許可權原始碼分析與自定義許可權Django原始碼