首页 > 其他分享 >路由组件

路由组件

时间:2022-10-08 15:48:41浏览次数:46  
标签:视图 --- action books 组件 router 路由

路由组件

  • 自动生成路由

  • action装饰器的使用

路由Routers

对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。

  • REST framework提供了两个router:

    分别是 simpleRouterDefaultRouter

自动生成路由

  • 自动生成路由的写法

    1.导入模块
    	from rest_framework.routers import SimpleRouter, DefaultRouter
    2. 实例化得到对象
    	router = SimpleRouter()
    3. 注册路由(可注册多个)  
    	router.register('books',views.BookView,'books')
        第一个参数:路径 第二个参数:视图类 第三个参数:别名,可以不写
        
    4.加入到urlpatterns中(有两种方式)
    	方式1:
        	把自动生成的路由添加到urlpatterns中
            urlpatterns += router.urls
        方式2:
        	导入模块,使用include添加
            path('', include(router.urls)),
    
  • 自动生成路由的映射关系

    自动生成的路由映射关系其实已经定死了
    	/books/--->get--->list
        /books/--->post--->create
        /books/1--->get--->retrieve
        /books/1--->put--->update
        /books/1--->delete--->destroy
    
  • 注意事项

    1.以后写的视图类不需要写action装饰器的话,视图类中必须要有list,destroy,retrieve,create,update方法之一

    ​ 即 必须是 5个视图扩展类之一+GenericAPIView 或 9个视图子类 或 ModelViewSet

    2.SimpleRouter和DefaultRouter的区别

    ​ DefaultRouter比SimpleRouter多一个根路径,显示所有注册过的路由

action装饰器的使用

在视图集中,如果想要让Router自动帮助我们为自定义的动作生成路由信息,需要使用rest_framework.decorators.action装饰器做映射

以action装饰器装饰的方法名会作为action动作名,与list、retrieve等同。

  • action装饰器可以接收的参数

    methods:支持的请求方式,列表传递
    
    detail:	声明该action 的路径是否是单一资源
    	True的路径格式是  xxx/<pk>/action方法名/, False的路径格式是  xxx/action方法名/ 
        
    url_path:控制生成的 /xxx/后的路径是什么
    	如果不写,默认以方法名命名   /xxx/action方法名/,一般跟函数名同名即可
        
    url_name: 别名,用于反向解析
        
    
  • 举例

    @action(methods=['GET','POST'], detail=True, url_path='login')
    def login(self, request,pk):
        pass
    

    此后可以自动创建路由

标签:视图,---,action,books,组件,router,路由
From: https://www.cnblogs.com/nirvana001/p/16769113.html

相关文章

  • Cmakelist如何添加自己的组件
    在components文件夹下添加各组件的CMakeList,其中可以设置的变量如下:COMPONENT_SRCS:要编译进当前组件的源文件的路径,推荐使用此方法向构建系统中添加源文件。COMPONENT_SRC......
  • Vue2路由
    路由前端路由:不同的网址对应各自的页面vue的前端路由:SPA应用要做出路由效果,就得判断当前网址,然后切换组件vue-router就是专门做切换组件的功能,它是一个单独的技术,......
  • Vue2组件
    组件创建组件的定义:实现应用中局部功能代码和资源的集合定义组件Vue.extend(option)option:和nnewVue(option)里的option几乎一致,但有点区别el不写原因:最终所有......
  • 【Vue2】一文弄懂前端路由
    一、对路由的理解1.什么是路由路由其实就是一组键值对or映射关系,在一个路由中应包含最基本的路径和组件信息。示例如下:上面展示的是一个路由组,即用"[]"将一组路由写在一......
  • 移动端 element + vue 二次封装上传图片的组件
    功能:支持预览、长按图片保存、删除项目中使用:1<el-form-itemlabel="上传照片"class="ml30">2<e-upload-image3v-model="image"4......
  • .NETCore .NET6中一些常用组件的配置及使用记录,持续更新中。。。
    .NETCore.NET6中一些常用组件的配置及使用记录,持续更新中。。。  NET6App介绍.NET6的CoreApp框架,用来学习.NET6的一些变动和新特性,使用EFCore,等一系列组件的运......
  • 阿里巴巴开源限流组件Sentinel初探之集成Gateway
    1Sentinel主页​​github.com/alibaba/Sen…​​1.1Sentinel介绍随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式服务架构的流量控制组件,......
  • 修复&还原系统组件
    在管理员命令提示符下复制以下命令并运行:Dism/Online/Cleanup-Image/ScanHealth::这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一致情况。Dism......
  • TSharding:用于蘑菇街交易平台的分库分表组件
     tshardingTShardingisthesimpleshardingcomponentusedinmogujietradeplatform.分库分表业界方案​​​​分库分表TShardingTSharding组件目标很少的资源投入即......
  • [TDD] 如何测试 React 异步组件?
    前言本文承接上文如何测试驱动开发React组件?​,这次我将继续使用@testing-library/react来测试我们的React应用,并简要简要说明如何测试异步组件。异步组件的测试内容......