drf之路由

一、基本方式:

  1、path/url('targets/', views.TargetsView.as_view())。

  2、re_path/url('target(?P<pk>d+)', Targetviews.View.as_view())。

二、继承了ViewSetMixin系列,可以写入actions的情况

  1、path/url('targets/', views.TargetsView.as_view(actions={'get':'list','post':'create'}))。

  2、re_path/url('target(?P<pk>d+)', Targetviews.View.as_view(actions={'get':'retrieve','put':'update','delete':'destroy'}))。

三、继承了ModelViewSet,自动路由的写法:
  1、第一步:导入routers模块,rest_framework.routers。

  2、第二步:有两个路由器类可选,使用其一,生成路由器对象,例如,router=路由器类()。

    ①routers.SimpleRouter:生成两条路由。

    ②routers.DefaultRouter:生成更多路由。

  3、第三步:注册,router.register('路由前缀','继承了ModelViewSet的视图类','路由别名'),例如,router.register('target',views.TargetView,'xxx')。

  4、第四步:生成路由,auto_urls=router.urls。

  5、第五步:合并路由,urlpatterns+=auto_urls。

四、有参装饰器action

  1、用途:给注册了自动路由的视图类增加自定义方法。

  2、用法:在自定义方法上方,@action(methods=['GET','POST'],detail=False)。

  3、路由:.../target/自定义方法名/。

  4、参数:

    ①methods:请求方式,列表形式。

    ②detail:布尔类型,是否需要传入<pk>。

原文地址:https://www.cnblogs.com/caoyu080202201/p/13275749.html