day13混入视图基类

13.1 Genericapiview

13.1.1 概念

概念:
继承自APIVIeW,并且增加对列表和详情视图可支持的通用的方法,并且可以搭配多个或者一个的Mixin拓展类,Genericapiview是数据管理的基类

13.1.2 属性

列表,详情视图通用属性

通用属性列表视图单独属性详情页面的单独属性
queryset=objects.all /结果对象pagination_class j进行分页设置lookup_url_kwarg 动态路由参数名
serializer_class=Serializer序列化器filter_backends 过滤后端的字段lookup_field 过滤orm参数

13.2 混入类与拓展类

13.2.1功能

功能一:
mixin混入类:只提供数据,与其对应的访问功能是没有实现的,并且可以完成对应的增删查改
功能二:
可以实现复杂的接口功能,Gemericapiview 提供数据,混入类提供操作

展示列表视图拓展类创建视图扩展类详细视图扩展类更新视图的拓展类删除视图的拓展类
1. ListModelMixin2. CreateModelMixin3.RetrieveModelMixin4.UpdateModelMixin5.DestroyModelMixin

1.该Mixin的 list 方法会对数据进行过滤和分页
2.如果序列化器对前端发送的数据验证失败返回 400错误
3.如果详情数据存在,返回200, 否则返回404
4.成功返回200序列化器校验数据失败,返回400错误
5.成功返回204,不存在返回404

13.2.2混入类与Gemericapiview的组合

ListCreateAPIView

提供post和get方法,可以创建一条数据或获取列表中的数据
继承: GenericAPIView,CreateModelMixin,ListModelMixin

# 导包
from rest_framework.generics import ListAPIView,ListCreateAPIView,RetrieveUpdateDestroyAPIView

# 采用拓展类对数据进行转化  ListCreateAPIView 实现查询数据的全部和添加数据的全部
# class KindsView(ListCreateAPIView):
#     queryset = Kind.objects.all()   # 指定查询结果集
#     serializer_class = KindSerialisers  # 指定序列化器
RetrieveUpdateAPIView

提供get,put,patch,方法
继承
GenericAPIView,RetrieveModelMixin,UpdateModelMixin

# 导包
from rest_framework.generics import ListAPIView,ListCreateAPIView,RetrieveUpdateDestroyAPIView

# class KindView(RetrieveUpdateDestroyAPIView):
#     queryset = Kind.objects.all()   # 指定查询结果集
#     serializer_class = KindSerialisers  # 指定序列化器
#     lookup_url_kwarg = 'id' # 指定动态参数的名
#     lookup_field = 'id' #指定过滤的ORM字段
#

13.2.3 应用

渲染主页面的和子页面的数据同时渲染到网页上

from django.shortcuts import render
from rest_framework.response import Response
from myapp.models import Kind,Goods
from myapp.serializers import KindSerialisers,GoodsSerializers,GoodsSerializers2
from rest_framework.generics import ListAPIView,ListCreateAPIView,RetrieveUpdateDestroyAPIView
from rest_framework.views import APIView

# Create your views here.
# 采用拓展类对数据进行转化  ListCreateAPIView 实现查询数据的全部和添加数据的全部
 class KindsView(ListCreateAPIView):
     queryset = Kind.objects.all()   # 指定查询结果集
     serializer_class = KindSerialisers  # 指定序列化器
 RetrieveUpdateDestroyAPIView帮助我们查询单个数据 修改一个数据  删除一个数据
 class KindView(RetrieveUpdateDestroyAPIView):
     queryset = Kind.objects.all()   # 指定查询结果集
     serializer_class = KindSerialisers  # 指定序列化器
     lookup_url_kwarg = 'id' # 指定动态参数的名
     lookup_field = 'id' #指定过滤的ORM字段

# # 采用拓展类对数据进行转化  ListCreateAPIView 实现查询数据的全部和添加数据的全部
class GoodsView(ListCreateAPIView):
     queryset = Goods.objects.all()   # 指定查询结果集
     serializer_class = GoodsSerializers # 指定序列化器
 # RetrieveUpdateDestroyAPIView帮助我们查询单个数据 修改一个数据  删除一个数据

 class GoodView(RetrieveUpdateDestroyAPIView):
     queryset = Goods.objects.all()   # 指定查询结果集
     serializer_class = GoodsSerializers # 指定序列化器

 # 查询数据,展示种类的外键为 种类名  查询所有信息
 class GoodView2(ListAPIView):
     queryset = Goods.objects.all()   # 指定查询结果集
     serializer_class = GoodsSerializers2# 指定序列化器


# 根据种类,展示对应的商品信息,展示种类外键为种类名
 class Goodview3(APIView):
     def get(self,request,id):
         # 根据种类查询商品信息
         good_data = Goods.objects.filter(kind_id=id)
         ser = GoodsSerializers2(instance=good_data,many=True)
         return Response(ser.data,status=200)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值