(4)DRF框架——视图集和自定义生成路由

视图集

1、路由匹配规则改变
2、视图中定义方法不再按照请求方式定义
导入地址

#四个视图集导入地址
from rest_framework.viewsets import ViewSet,GenericViewSet,ModelViewSet,ReadOnlyModelViewSet

 

两个基本视图集

1. ViewSet

继承自APIview,作用也与APIView基本类似,提供了身份认证,权限校正,流量管理等。

在ViewSet中,没有提供任何动作的方法,需要我们自己实现动作的方法

2. GenericCiewset

继承自GenericAPIview

两个拓展视图集

1.ModelViewSet

继承自GenericAPIview 且继承了五个拓展类视图

2.ReadOnlyModelViewSet

继承自GenericAPIview 且继承了 ListModelMixin 和 RetrieveModelMixin这两个拓展类视图

 

使用

url

from django.conf.urls import url
from . import AAAPIview
urlpatterns = [
    url(r'^books/$',AAAPIview.BooksView.as_view({#不需要查询参数
        'get':'list',#获取全部数据
        'post':'create',#新建数据
    })),
    url(r'^books/(?P<pk>\d+)/$',AAAPIview.BooksView.as_view({#需要查询参数
        'put':'update',#更新数据
        'get':'retrieve',#获取单个数据
        'delete':'destroy'#删除数据
    }))
]

view

from .models import BookInfo
from .serializer import BookModelSerislzier
from rest_framework.viewsets import ModelViewSet

class BooksView(ModelViewSet):#继承了ModelViewSet
    #查询多个 和新增数据
    queryset = BookInfo.objects.all()#指定当前类视图使用的查询集数据
    serializer_class = BookModelSerislzier #指定类视图使用的序列化器类 注意后面没有括号 只是类名

 

 

自定义生成路由

from . import AAAPIview
from rest_framework.routers import SimpleRouter
urlpatterns = []

router = SimpleRouter()#实例化
router.register('books',AAAPIview.BooksView,base_name='books')#为对象指定 路由地址 视图(这个视图必须是继承视图集的) 别名
urlpatterns +=router.urls #添加进urlpatterns

 

posted @ 2019-10-23 15:57  只会玩打野  阅读(420)  评论(0编辑  收藏  举报