drf 路由控制

url控制器

原始的url路由

from django.conf.urls import url
from app01 import views
urlpatterns = [
    url(r'^books/$', views.BookView.as_view()),
    url(r'^books/(?P<pk>\d+)$', views.BookDetailView.as_view()),
]

半自动的url路由设置(重点,单一类中支持多个路由)

主要是依靠ViewSetMixin(重新定义的as_view函数进而重新分配路由)

from rest_framework.viewsets import ViewSetMixin
class ttt(ViewSetMixin,APIView):#继承关系,必须先继承ViewSetMixin函数,再继承APIView函数
    #为的是在使用ViewSetMixin中重写的as_view函数
    def aaa(self,request):
        return Response('aaaa')

    def bbb(self,request):
        return Response('bbbbbbb')

    def ccc(self,request):
        return Response('cccccccc')

那么在路由中就可以怎么书写

url(r'^ttt/', views.ttt.as_view({'get':'aaa','post':'bbb'})),
url(r'^ggg/',views.ttt.as_view({'get':'ccc',}))
#这样的方式,就可以使得一个类可以支持很多函数

全自动的url路由设置

是在使用ModelViewSet的类

from rest_framework.viewsets import ModelViewSet
class PublishView(ModelViewSet):
    queryset = models.Publish.objects.all()
    serializer_class = PublishSer

同时需要在路由中配置

from django.conf.urls import include
#include 路由分发
from rest_framework import routers
router = routers.DefaultRouter()
#生成对象
router.register('publish',views.PublishView)
#配置视图层,和路由名称

在路由中的使用

url(r'', include(router.urls)),

 

 

 

posted @ 2019-02-26 09:43  msjaxuexi  阅读(556)  评论(0编辑  收藏  举报