需求描述:假如action方法有很多,6个路由条目都需要一一映射,再加上自定义的一些action方法,会麻烦。能不能自动生成路由条目,不需要自己定义。
步骤:
1、使用SimpleRouter创建路由器对象
router=routers.SimpleRouter()
2、使用路由器对象调用register方法进行注册
router.register(r’projects’,ProjectViewSet);第一个参数为路由前缀,第二个参数为视图集类
3、在urlpatterns列表中,生成路由条目
from django.urls import path,include
方式一:path(’’,include(router.urls));路由器对象.urls属性可获取生成的路由条目
方式二:router.urls为列表 urlpatterns+=router.urls
注意:
1、可以使用路由器对象,只能为视图集类自动生成路由条目
2、路由器对象默认只为通用action(create、list、retrieve、update、destroy)方法生成路由条目,自定义的action不会生成路由条目;
3、必传参数prefix指定路由前缀、viewset指定视图集类,不可调用as_view
4、DefaultRouter与SimpleRouter的区别:功能类似,仅有的区别:DefaultRouter会自动生成一个根路径(显示获取数据的路口)
需求:我想要使用路由机制去为自定义的路由生成路由条目
导入:from rest_framework.decorators import action
1、如果需要使用路由器机制自动生成路由条目,那么就必须得使用action装饰器
2、methods指定需要使用的请求方法,如果不指定,默认为GET
3、detail指定是否为详情接口,是否需要传递当前模型的pk值
如果需要传递当前模型的pk值,那么detail=True,否则detail为False
4、url_path指定url路径,默认为action方法名称,一般不需要指定
5、url_name指定url路由条目名称后缀,默认为action方法名称,一般不需要指定。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/74411.html