28_rest-framework 路由控制

2018-12-17  本文已影响0人  knot98

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
会自动生成路由,同样不推荐使用
上一篇 下一篇

猜你喜欢

热点阅读