1、ModelSerializer  如下

from api_test.errorCode.errorCode import Status
class RelatedbSerializer(serializers.ModelSerializer):
"""
关联数据库返回JSON参数序列化
"""
globalHost = serializers.CharField() class Meta:
model = HostRelateDB
fields = ('id', 'globalHost', 'relateDB_name', 'db_host', 'db_username', 'db_pwd', 'db_port') def validate_globalHost(self, globalHost):
if globalHost:
globalHost = int(globalHost) if globalHost.isdigit() else globalHost
if not isinstance(globalHost, int):
raise serializers.ValidationError("PARAM_NOT_INT")
try:
global_host_obj = GlobalHost.objects.get(id=globalHost)
except ObjectDoesNotExist:
raise serializers.ValidationError("NOT_FOUND")
else:
raise serializers.ValidationError("PARAM_IS_NULL") return globalHost 2、序列化用法如下,新增数据
data = JSONParser().parse(request)
serialze = RelatedbSerializer(data=data) #序列化,将json数据传入ModelSerializer  
if serialze.is_valid():
global_host_obj = GlobalHost.objects.get(id=data["globalHost"])
serialze.save(globalHost=global_host_obj)
return JsonResponse(code=Status.SUCCESS.get_code(), msg=Status.SUCCESS.get_msg(),data=serialze.data) 3、反序列化用法如下,查询数据
globalHost_id = request.GET.get("globalHost")
try:
page_size = int(request.GET.get("page_size", 20))
page = int(request.GET.get("page", 1))
except (TypeError, ValueError):
return JsonResponse(code="999985", msg="page and page_size must be integer!")
if not globalHost_id.isdecimal():
return JsonResponse(code="999996", msg="参数有误!")
try:
GlobalHost.objects.get(id=globalHost_id)
except ObjectDoesNotExist:
return JsonResponse(code="999995", msg="相关host不存在!")
try:
relateDBObj = HostRelateDB.objects.filter(globalHost_id=globalHost_id)
paginator = Paginator(relateDBObj, page_size) # paginator对象
total = paginator.num_pages # 总页数
try:
obm = paginator.page(page)
except PageNotAnInteger:
obm = paginator.page(1)
except EmptyPage:
obm = paginator.page(paginator.num_pages)
serializer = RelatedbSerializer(obm, many=True) # 反序列化,将查询到的model对象传入ModelSerializer  
    return JsonResponse(data={"data": serializer.data,
"page": page,
"total": total
}, code="999999", msg="成功")

 
4、反序列化对单个对象和列表对象序列化的区别
3中是对多个对象的序列化,单个序列化如下
try:
obj = AutomationTestTaskSerializer(AutomationTestTask.objects.get(project=project_id)) # 使用get方法取单个对象
print("obj:",obj)
return JsonResponse(code="999999", msg="成功!", data=obj.data)
except ObjectDoesNotExist:
print("ObjectDoesNotExist:")
return JsonResponse(code="999999", msg="成功!")
 

ModelSerializer 使用知识点_序列化和反序列化用法区别的更多相关文章

  1. C#中的序列化与反序列化

    眼看XX鸟的课程关于C#的知识点就要学完了,翻看网络中流传的教程还是发现了一个课程中没有讲到的知识点:序列化与反序列化 无奈还是了解一下并操作一番,以备后用吧 介绍:就是将对象信息转化为二进制信息以便 ...

  2. 【Java基础】序列化与反序列化深入分析

    一.前言 复习Java基础知识点的序列化与反序列化过程,整理了如下学习笔记. 二.为什么需要序列化与反序列化 程序运行时,只要需要,对象可以一直存在,并且我们可以随时访问对象的一些状态信息,如果程序终 ...

  3. Json数据的序列化与反序列化的三种经常用法介绍

    下面内容是本作者从官网中看对应的教程后所做的demo.其体现了作者对相关知识点的个人理解..作者才疏学浅,难免会有理解不到位的地方.. 还请各位读者批判性对待... 本文主要介绍在Json数据的序列化 ...

  4. DRF框架(三)——media资源路径设置、多表设计复习及补充、序列化组件(ModelSerializer)操作多表(序列化与反序列化)、多表序列化与反序列化整合(重点)

    media资源路径设置  (设置好后把图片放在这个文件夹中,通过链接能访问到图片) 1.先在根目录设置一个media文件夹 2.配置settings.py,加上下面的 MEDIA_URL = '/me ...

  5. ModelSerializer,序列化与反序列化整合

    复习 """ 1.解析模块:全局局部配置 REST_FRAMEWORK = { # 全局解析类配置 'DEFAULT_PARSER_CLASSES': [ 'rest_f ...

  6. Newtonsoft.Json高级用法,json序列号,model反序列化,支持序列化和反序列化DataTable,DataSet,Entity Framework和Entity,字符串

    原文地址:https://www.cnblogs.com/yanweidie/p/4605212.html 手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口 ...

  7. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

  8. JSON数据处理框架Jackson精解第一篇-序列化与反序列化核心用法

    Jackson是Spring Boot默认的JSON数据处理框架,但是其并不依赖于任何的Spring 库.有的小伙伴以为Jackson只能在Spring框架内使用,其实不是的,没有这种限制.它提供了很 ...

  9. java ->IO流_序列化流与反序列化流

    序列化流与反序列化流 用于从流中读取对象的操作流 ObjectInputStream    称为 反序列化流 用于向流中写入对象的操作流 ObjectOutputStream   称为 序列化流(对象 ...

随机推荐

  1. P4411&&BZOJ1978 [BJWC2010]取数游戏(动态规划dp)

    P4411 一道dp f[i]表示一定选第i个数的条件下前i个数所能得到的最优值 last[i]表示质因数i在数列a中最后出现时的下标 状态转移方程为\(f[i]=max\{f[last[j]\:|\ ...

  2. [转帖]什么是 LLVM?Swift, Rust, Clang 等语言背后的支持

    要了解用于以编程方式生成机器原生代码的编译器框架是如何让新语言的推出以及对现有的语言进行增强比以往更加容易了. https://www.oschina.net/translate/what-is-ll ...

  3. IIS服务搭建 试图加载格式不正确的程序

    1.基础步骤 https://jingyan.baidu.com/article/fedf073770f23335ac8977b1.html 2.错误解决 试图加载格式不正确的程序   解决:在IIS ...

  4. import cv2 报错:ModuleNotFoundError: No module named 'cv2'

    tensorflow,import cv2报错:ModuleNotFoundError: No module named 'cv2' 我是这样解决的:conda install opencv 然后不报 ...

  5. Codeforces 1220B. Multiplication Table

    传送门 冷静分析容易发现,我们只要能确定一个数的值,所有值也就可以确定了 确定一个数的值很容易,$a_ia_j=M_{i,j},a_ia_k=M_{i,k},a_ja_k=M_{j,k}$ 然后就可以 ...

  6. javaScript运动框架之缓冲运动

    缓冲运动 逐渐变慢,最后停止 距离越远速度越大   速度由距离决定 速度=(目标值-当前值)/缩放系数 存在Bug 速度取整 跟随页面滚动的缓冲侧边栏 潜在问题:目标值不是整数时 缓冲运动的停止条件 ...

  7. python模块导入总结

    python模块导入总结 模块导入方式 定义test.py模块 def print_func(): print("hello") import 语句 导入模块语法 import m ...

  8. VMware虚拟机中CentOS/redhat设置固定IP

    你的笔记本中的VMware中redhat或centOS系统,如果想在上面建站,而又如果你需要在家里和公司都能访问该站(至少希望你自己的笔记本能访问),那么就需要将虚拟机IP设置为固定IP了.以下介绍两 ...

  9. ssh远程登录故障解决方案

    问题描述: xshell远程连接服务器连接不上,如下图所示: 故障排除: . 首先查看自己系统的防火墙是否关闭,没有关闭的话关闭一下. # centos 7中关闭防火墙命令: systemctl st ...

  10. 2019.9.16 linux安装软件lamp

    2019/9/16 Linux软件安装 方式:yum/rpm/源码安装 yum安装: yum 是通过分析RPM的包头数据后,根据各软件的相关性制作出属性相对应的解决方案,然后可以自动处理软件的相依属性 ...