自动生成路由

自动生成路由

# 1 导入路由类
from rest_framework.routers import SimpleRouter, DefaultRouter
	# DefaultRouter生成的路由更多一点,多了一个根的路由(没有用)
    
# 2 实例化得到对象
router = SimpleRouter()

# 3 注册路由
router.register('books', views.BookView)

# 4 自动生成的路由
print(router.urls)

# 5.1 手动把自动生成的路径加入到urlpatterns
urlpatterns = [
    path('api/v1/', include(router.urls)),
]

# 5.2 自动把自动生成的路径加入到urlpatterns
urlpatterns+=router.urls

'''
a=[1,2,3]
b=[4,5,6]
print(a+b)
>>> [1, 2, 3, 4, 5, 6]
'''


总结:ViewSetMixin+9个视图字类才能用自动生成路由

action装饰器

给自动生成路由的视图类再定制一些路由
from rest_framework.decorators import action

用法一:
    # api/v1/books/sen_email/
    @action(methods=['GET'], detail=False)
    def sen_email(self, request, *args, **kwargs):
        print(args)
        print(kwargs)
        return APIResponse(msg='发送成功')
    
方法二:
    # api/v1/books/1011/sen_email/
    @action(methods=['GET'], detail=True)
    def sen_email(self, request, *args, **kwargs):
        # pk=1011
        print(args)
        print(kwargs)
        return APIResponse(msg='发送成功')
posted @ 2021-04-30 09:01  最冷不过冬夜  阅读(102)  评论(0编辑  收藏  举报