APIView的基本使用
1.先下载一个模块
安装drf:pip3 install djangorestframework
导入模块:from rest_framework.views import APIView
序列化组件
需要先创建一个py文件 用来写继承序列化类
from rest_framework import serializers
class BookSerializer(serializers.Serializer)
name = serializers.CharField(max_length=32)
price = serializers.CharField(max_length=32)
publish = serializers.CharField(max_length=32)
def create(self, validated_data):
res = Book.objects.create(**validated_data)
return res
def update(self, instance, validated_data):
instance.name = validated_data.get('name')
instance.price = validated_data.get('price')
instance.publish = validated_data.get('publish')
instance.save()
return instance
序列化
序列化多条数据
class BookView(APIView):
def get(self, request):
book_list = Book.objects.all()
ser = BookSerializer(instance=book_list, many=True)
return Response(ser.data)
序列化单条数据
class BookView(APIView):
def get(self, request, pk):
book_list = Book.objects.filter(pk=pk).first()
ser = BookSerializer(instance=book_list)
return Response(ser.data)
反序列化
反序列化的新增
class BookView(APIView):
def post(self, request):
ser = BookSerializer(data=request.data)
if ser.is_valid():
ser.save()
return Response(ser.data)
else:
return Response(ser.errors)
class BookView(APIView):
def put(self, request, pk):
book = Book.objects.filter(pk=pk).first()
ser = BookSerializer(instance=book, data=request.data)
if ser.is_valid():
ser.save()
return Response(ser.data)
else:
return Response(ser.errors)
class BookView(APIView):
def delete(self,request,pk):
Book.objects.filter(pk=pk).delete()
return Response()
总结
前后端分离项目:需要我们自己去做数据校验,手动去转数据格式,因为跨平台数据传输都用json字符串,不能直接jsonqueryset对象
1.序列化:把python中的对象转换成json格式字符串,序列化器会把模型对象转换成字典,经过response以后变成json字符串
2.反序列化:把json格式字符串转换成python中的对象,把客户端发送过来的数据经过request以后变成字典
序列化器:1.定义一个类继承Serializer
2.在类内写字段,字段参数
3.在视图类中,实例化得到一个序列化类的对象,传入要序列化的数据
4.返回的时候用Response序列化类的对象.data直接获取数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现