五、路由

一、自动生成路由

urls.py
    # 第一步导入routers模块
    from rest_framework import routers
    
    # 第二步实例化类
    router=routers.SimpleRouter()
    # routers.DefaultRouter()	生成的路由更多
    
    # 第三步注册
    router.register('books', views.BookViewSet)
    # router.register('前缀','继承自ModelViewSet视图类','别名')
    
    # 第四步获取自动生成的路由
    router.urls		# 自动生成的路由,返回的是一个列表
    
    # 第五步,将路由增加入urlpatterns中
    urlpatterns+=router.urls

二、action装饰器

'''
1. 在视图类中,我们总结前后,最终实现继承ModelViewSet实现五接口
2. 但同时,我们需要在路由中as_view()中增加actions参数,如此才能实现请求方式与方法绑定,做到什么请求方式,执行什么方法

在使用自动生成路由时,我们发现,自动生成的路由都有其固定的规范,无法实现actions参数的功能,我们也无法给自动生成的路由直接添加actions参数

此时,就出现了action装饰器,写在需要装饰的函数上面(有点鸡肋!)
'''
views.py
	from rest_framework.viewsets import ModelViewSet
	from rest_framework.decorators import action
	
    class xxx(ModelViewSet):
        queryset = 模型表对象
        # queryset = models.表名.objects
        serializer_class = 模型表对象
        # serializer_class = ZzwSerializer
        
        @action(methods=None, detail=None, url_path=None, url_name=None, **kwargs)
        def xxx(self, request):
            pass
        '''
        methods=['post', 'get', 'put', 'patch']		写入请求方式
        detail=None		填入bool值,用于判断是否生成主键参数
        	注意:router.register('books', views.BookViewSet)	
        	False:	^books/xxx/$ [name='book-get-1']
        	True:	^books/(?P<pk>[^/.]+)/xxx/$ [name='book-get-1']
        '''

 

posted @ 2021-07-04 19:39  zzwYYYYYY  阅读(50)  评论(0)    收藏  举报