DRF单表序列化和反序列化
DRF序列化和反序列化
-
安装 djangorestframework
pip install djangorestframework
-
将rest_framework注册到app上
INSTALLED_APPS = [ 'rest_framework', 'app01' .... ]
-
urls
from django.urls import path from . import views urlpatterns = [ path('index/',views.UserView.as_view()) ]
-
在models.py
from django.db import models # 用户 class User(models.Model): name = models.CharField(max_length=32,unique=True,null=True)
-
在 app01 文件下 新建 serializer.py
from rest_framework import serializers from .models import User # 序列化 class UserSerializers(serializers.ModelSerializer): class Meta: model = User fields = '__all__' # 反序列化 class UserUnSerializer(serializers.Serializer): name = serializers.CharField(max_length=32) password = serializers.CharField(max_length=255) # 添加数据 def create(self,data): return User.objects.create(**data) # 更新数据 def update(self,instance,data): return instance.update(**data)
-
在 views
from rest_framework.response import Response from rest_framework.views import APIView from . import models from .serializer import UserSerializers class UserView(APIView): def get(self,request): user = models.User.objects.all() # 序列化 将对象转成json串 data = UserSerializers(user,many=True) return Response(data) # 添加数据 def post(self,request): name = request.POST.get('name','').strip() password = request.POST.get('password','').strip() dic = {"name":name,"password":password} user = UserUnSerializer(data=dic) if user.is_valid(): user.save() return HttpResponse('post-ok') return HttpResponse('post-no') # 更新数据 def put(self,request): id = request.POST.get('id','0') obj = models.User.objects.filter(id=id) name = request.POST.get('name','').strip() dic = {"name":name} user = UserUnSerializer(obj,data=dic) if user.is_valid(): user.save() return HttpResponse('put-ok') return HttpResponse('put-no')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端