Python全系列 教程
3567个小节阅读:5930.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
rest_framework.generics.GenericAPIView
继承自APIVIew,主要增加了操作序列化器和数据库查询的方法,作用是为下面Mixin扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个Mixin扩展类
xxxxxxxxxx
from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
from rest_framework import status
from rest_app2.models import Student
from rest_app2.serializers import StudentSerializer
# 使用GenericAPIView类来实现 restframework的视图包装
class StudentList(GenericAPIView):
# 指定查询集
queryset = Student.objects.all()
# 指定序列化器,不用创建对象
serializer_class = StudentSerializer
def get(self,request,format=None):
# 查询所有数据
stus = self.get_queryset()
# 将数据转换为json格式, stus是一个列表,many代表要转换的数据是一个列表
ser =self.get_serializer(stus,many=True)
return Response(ser.data)
def post(self,request,format=None):
ser = self.get_serializer(data=request.data)
# 验证数据,如果验证通过,则保存数据
if ser.is_valid():
# 保存数据
ser.save()
return Response(ser.data)
else:
# 验证失败,返回错误信息
return Response(ser.errors,status=400)
class StudentDetail(GenericAPIView):
# 指定查询集
queryset = Student.objects.all()
# 指定序列化器,不用创建对象
serializer_class = StudentSerializer
def get(self,request,pk,format=None):
# 查询单个数据
try:
stu = self.get_object()
except Student.DoesNotExist:
return Response({'error':'数据不存在'},status=404)
# 将数据转换为json格式
ser = self.get_serializer(stu)
return Response(ser.data,status=200)
def put(self,request,pk,format=None):
# 查询单个数据
try:
stu = self.get_object()
except Student.DoesNotExist:
return Response({'error':'数据不存在'},status=404)
# 修改数据
ser = self.get_serializer(stu,data=request.data)
# 验证数据,如果验证通过,则保存数据
if ser.is_valid():
# 保存数据
ser.save()
return Response(ser.data,status=status.HTTP_201_CREATED)
else:
# 验证失败,返回错误信息
return Response(ser.errors,status=400)
def delete(self,request,pk,format=None):
# 查询单个数据
try:
stu = Student.objects.get(pk=pk)
except Student.DoesNotExist:
return Response({'error':'数据不存在'},status=404)
# 删除数据
stu.delete()
return Response({'msg':'删除成功'},status=204)
实时学习反馈
1. 对于rest_framework中GenericAPIView类说法错误的是?
A 主要作用是为下面的Mixin扩展类的执行提供方法的支持
B 需要使用serializer_class属性指定视图使用的序列化器
C 需要使用queryset 属性指明使用的数据查询集
D get_queryset()返回视图所需要的模型类数据对象
答案
1=>D