美文网首页
28_rest-framework 路由控制

28_rest-framework 路由控制

作者: knot98 | 来源:发表于2018-12-17 15:29 被阅读0次

    rest-framework路由控制

    一、基本路由:

    最常用的路由写法
    url(r'^books/$', views.BookView.as_view())
    url(r'^books/(?P<pk>\d+)$', views.BookDetailView.as_view()),
    

    二、半自动路由

    from rest_framework.viewsets import ViewSetMixin
    
    ViewSetMixin这个类重写了as_view方法,不过没有继承View,所有使用的时候需要与继承了View的类或者View类一起使用:

    在路由层:

    url(r'^test1/$', views.TestAll.as_view({'get': 'test'})),
    url(r'^test2/$', views.TestAll.as_view({'get': 'test2'})),
    url(r'^test3/$', views.TestAll.as_view({'get': 'test3'})),
    
    在一个视图类中,可以写很多个路由
    class TestAll(ViewSetMixin,APIView):
        def test(self,request):
            return HttpResponse('test')
    
        def test2(self, request):
            return HttpResponse('test2')
    
        def test3(self, request):
            return HttpResponse('test3')
    

    三、全自动路由

    路由配置:
    from django.conf.urls import url,include
    from app01 import views
    from rest_framework import routers
    router=routers.DefaultRouter()
    # 两个参数,一个是匹配的路由,一个是视图中写的CBV的类
    router.register('publish',views.PublishView)
    urlpatterns = [    
        # 可以用 以下方式访问
        # 1 http://127.0.0.1:8000/publish/
        # 2 http://127.0.0.1:8000/publish.json
        # 3 http://127.0.0.1:8000/publish/3
        # 4 http://127.0.0.1:8000/publish/3.json   
        url(r'',include(router.urls))
    ]
    
    视图类:
    from rest_framework.viewsets import ModelViewSet
    class PublishView(ModelViewSet):
        queryset=models.Publish.objects.all()
        serializer_class=PublishSerializers
    
    会自动生成路由,同样不推荐使用

    相关文章

      网友评论

          本文标题:28_rest-framework 路由控制

          本文链接:https://www.haomeiwen.com/subject/ogcckqtx.html