第十四单元 视图集及路由

一.ViewSet

1.视图集是什么

视图集简单来说就是一群视图逻辑操作的功能合集,并可采用路由映射的方式进行功能选择,编写的内置逻辑方法不再是使用请求命名,而是使用功能来进行命名

直白来说,为了防止请求冲突,视图集会将增删改查操作集合到一个视图里

2.action是什么

视图集类不再实现getpost等方法,而是实现动作actionlistcreate等,视图集只在使用as_view方法的时候,才会将action动作与具体请求方式对应上

就是说视图集类不再用get put post delete方法命名函数,而是用action这个动作来实现
action动作包括
在这里插入图片描述
利用视图集代码实现增删查改
在这里插入图片描述

我们可以看到,如果不是在ViewSet视图集就在一个类里来同时编写查询全部与查询单个数据两个方法的话,都是get请求会发生冲突
而使用action动作来命名就不会冲突。
路由映射也要发生改变
在这里插入图片描述
as_view(‘请求’:‘映射方法’)

二.混入类视图集ModelViewSet

1.什么是modelviewset

ModelViewSet从类继承 GenericAPIView,并包括用于各种动作实现方式中,通过在各种混入类的行为混合,包含了***.list***、.retrieve.create.update.partial_update、和***.destroy等方法,继承ListModelMixin***、RetrieveModelMixinCreateModelMixinUpdateModelMixinDestroyModelMixin

2.代码的编写

导包

from rest_framework.viewsets import ModelViewSet

代码编写
view视图层

# 使用ModelViewSet实现增删查改操作
class PeopleViewSet(ModelViewSet):
    queryset = People.objects.all() # 指定查询结果集
    serializer_class = PeopleSerializer2    # 指定序列化器

url
在这里插入图片描述

三.DefaultRouter路由生成

1.需要的导包

在编写完ModelViewSet后,我们就要开始简化url模块的代码

from rest_framework import routers

2.路由的编写

在这里插入图片描述

3.SimplaeRouter路由生成

1.SimplaeRouter为DefaultRouter的子类。

2.使用方法

router = routers.SimplaeRouter()

router.register('people2',views.PeopleViewSet,'people2')

urlpatterns += router.urls

3.两种路由生成方式区别及根路由是什么

  • SimpleRouter`:最基本的路由映射方式,只会将视图集具备的混入类功能进行路由的生成
  • DefaultRouter:对比与SimpleRouter更加高级,包含有drf根页面的路由,不只是视图集所包含的视图部分

本单元引用部分来自教案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值