当前位置: 首页 > news >正文

django restful framework序列化与反序列化

在前后端分离开发中,对于RESTfulAPI设置,一般需要将查询/更新数据以JSON方式进行返回。

序列化

Model.py

from django.db import models
class User(models.Model):username = models.CharField(verbose_name='用户名',max_length=10)age = models.IntegerField(verbose_name='年龄')email = models.CharField(verbose_name='邮箱',max_length=20)

View.py

from api.models import User
from  api.models import userSerializer
class userView(APIView):def get(self,request):queryset = User.objects.all()# 序列化res = userSerializer(instance=queryset, many=True)return Response({'code':200,'msg':'ok','data':res.data})

Url.py

from . import views
from django.urls import pathurlpatterns = [path("user/",views.userView.as_view())
]

1.序列化器类(Serializer)

from rest_framework import serializers
class userSerializer(serializers.Serializer):username = serializers.CharField()age = serializers.CharField()email = serializers.CharField()

2.序列化器类(ModelSerializer)

from rest_framework import serializers
class userSerializer(serializers.ModelSerializer):class Meta:model = Userfields = '__all__'

postman测试get方法

反序列化

DRF序列化器可以将来自客户端的请求数据(通常是JSON数据)转换为Python对象,以便在视图中进行处理。

from api.models import User
from  api.models import userSerializer
class userView(APIView):def post(self,request):# 反序列化serializer = userSerializer(data=request.query_params)# 如果验证成功if serializer.is_valid():serializer.save()return Response({'code': 200, 'msg': 'ok'})else:return Response({'code': 201, 'msg': 'error'})

postman测试post方法

相关文章:

  • 二十三、RestClient操作索引库
  • EPT-Net:用于3D医学图像分割的边缘感知转换器
  • gitlab图形化界面使用
  • Verilog基础:时序调度中的竞争(一)
  • ElasticSearch之cat aliases API
  • Redis中文结果查看方式
  • 【Python 千题 —— 基础篇】删除列表值
  • Nginx模块开发之http过滤器filter
  • MySQL面试,MySQL事务,MySQL锁,MySQL集群,主从,MySQL分区,分表,InnoDB
  • 蓝桥杯每日一题2023.11.23
  • 【算法专题】滑动窗口—无重复字符的最长子串
  • Django项目window环境部署
  • Python之Pygame游戏编程详解
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)
  • Missing file libarclite_iphoneos.a 问题解决方案
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • echarts花样作死的坑
  • Java超时控制的实现
  • Java程序员幽默爆笑锦集
  • JS基础之数据类型、对象、原型、原型链、继承
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue.js-Day01
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 微信小程序填坑清单
  • 我的zsh配置, 2019最新方案
  • 译自由幺半群
  • ​Python 3 新特性:类型注解
  • ​决定德拉瓦州地区版图的关键历史事件
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #VERDI# 关于如何查看FSM状态机的方法
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (4.10~4.16)
  • (C++20) consteval立即函数
  • (C语言)二分查找 超详细
  • (floyd+补集) poj 3275
  • (差分)胡桃爱原石
  • (算法)N皇后问题
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Mysql的优化设置
  • ./configure,make,make install的作用(转)
  • .NET CLR基本术语
  • .NET COER+CONSUL微服务项目在CENTOS环境下的部署实践
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET 材料检测系统崩溃分析
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NetCore发布到IIS
  • .net开发时的诡异问题,button的onclick事件无效
  • .NET开发者必备的11款免费工具
  • .NET中 MVC 工厂模式浅析