django-restframework的router

django-restframework的detail_router

今天在写接口时要在已有的url上增加一个参数,需要单独修改一个视图函数的url,查了些文档,特此记录下来

router = routers.DefaultRouter()
router.register('test', Test1ViewSet, base_name='test')
test_router = routers.NestedSimpleRouter(router, r'test', lookup='test1')
test_router.register(r'test2', Test2ViewSet, base_name='test2')
# url = api/test/(?P<test_pk>[^/.]+)/test2/
# 这样可以实现路由的嵌套, 但是这不是重点我需要在test2后再接收参数
# 例 api/test/(?P<test_pk>[^/.]+)/test2/(?P<pk>[^/.]+)/(?P<xxx>[^/.]+)/test_view

class Test2ViewSet(viewset):
'''
代码简写了, 具体使用哪个viewset由实际情况决定
'''

    @detail_router(method=['POST'], url_path='(?P<xxx>[^/.]+)/test_view')
    def test_view(self, request, *args, **kwargs)
    '''
    在drf最新的版本中是不推荐使用list_router和detail_router并且会将这两个删除掉,官方建议使用@action,
    但是由于我们项目使用的是3.5版本, 如果有需要可以查看官方文档,action是将两个封装到一起,更好用一些
    '''
        return Response("url=api/test/(?P<test_pk>[^/.]+)/test2/(?P<pk>[^/.]+)/(?P<xxx>[^/.]+)/test_view")

通过url_path可以自定义这个视图函数的url,接收传参就和边写普通的url是一样的,detail_router可以这样用, list_router应该也可以如果有需要可以尝试一下

文章写得很糙,请见谅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值