路由组件

路由组件

自动生成路由

自动生成路由,在urls.py中
from rest_framework.routers import SimpleRouter,DefaultRouter
# DefaultRouter 会给一个drf渲染过得首页,SimpleRouter的没有渲染,有所有的路由
router=SimpleRouter()
# 必须是继承ViewSetMixin的子类,才能自动生成路由
router.register('books',views.BookView)

# 方式一:路由分发,可以加前缀
urlpatterns = [
    path('api/', include(router.urls))
]

# 方式二
urlpatterns+=router.urls

自定路由映射关系

给视图类中的派生方法自动生成路由,使用drf的装饰器action

class PublishAPIView(ModelViewSet):
    queryset = models.Publish.objects.all()
    serializer_class = serializer.PublishSerializer

    @action(methods=['GET'], detail=False, url_path='login')
    def login(self, request, *args, **kwargs):
        return Response('登录成功')
# 自动生成的路由:publish/login/
    
# action参数说明:
methods:一个列表指定和那些请求方式做映射关系
detail:等于true时,生成的路由是:publish/(?P<pk>[^/.]+)/login/,在视图类的方法中能获取到pk
url_path:指定路由,不填的话使用函数名
url_name:别名

# 继承了ViewSetMixin的视图类有action属性,值是当次请求要执行的函数名

# 自动生成路由的类:继承了ViewSetMixin+九个视图子类(两个视图基类+五个视图扩展类)
posted @ 2021-07-23 20:54  zheng-sn  阅读(91)  评论(0)    收藏  举报