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
网友评论