序列化与反序列化(python的json、与JavaScript的JSON)、Form组件返回的error_messages如何转换为dict类型、django序列化、bytes与str转换

30 篇文章 1 订阅
18 篇文章 1 订阅

目录

一、Python:序列化---》json

二、JavaScript:序列化-----》JSON

三、Form组件返回的error_messages如何转换为dict类型

四、django序列化

方式一:ajax请求后,后台的返回值直接返回至一个新的html.py,将对象值遍历,再通过ajax回调函数,append入访问页面;(一个页面,两次请求)

方式二:通过django序列化()

五、bytes转换string



前言:json模块主要是转换数据类型作用,但是其可以在不同编程语言中使用,相当于不同编程语言之间的桥梁;

一、Python:序列化---》json

json模块下就两种方式使用广泛;

1.dumps:----------------------即:将数据类型转换成string类型;注意,这里的数据类型是json字符串类型;

2.loads:-----------------------即:将转换为json字符串类型的数据,解析为原来的数据类型;

下面简单截图:

简单示例:

import json
str ='{"lastDoneDataTime":"2019-04-29 17:32:00"}'
html = json.loads(str)

print(type(html))
import json
html ={"lastDoneDataTime":"2019-04-29 17:32:00"}
str = json.dumps(html)

print(type(str))

二、JavaScript:序列化-----》JSON

1.字符串 = JSON.stringify (对象)       ---》具体对象转字符串

2.对象 = JSON.parse(字符串)     ---》字符串转具体对象

简单截图示例:

三、Form组件返回的error_messages如何转换为dict类型

在使用ajax的方式提交表单数据时,通过Form组件验证数据,数据正确时,存入数据库以及后续页面的刷新;当数据验证的is_valid()的值等于False的时候,即:数据验证不通过,Form组件返回的对象obj有error_messages信息;但是由于使用的是ajax方式,ajax回调函数接收的返回参数arg是字符串或者JSON格式(在ajax中添加上dataType:‘JSON’)的数据;所以后端需要将errors信息转换为JSON格式;

由于errors不属于dict、tuple等可以dumps为json格式的数据;此时需要引入

form django.forms.utils import ErrorDict

Form组件:Django框架(十七):Form组件之基本功能初识_冷凝娇的博客-CSDN博客_django form作用

ajax:JavaScript:Ajax在Django中的应用、jquery事件绑定、jquery事件委托、serialize、serializeArray获取form的输入值_冷凝娇的博客-CSDN博客_django ajax 输入框

四、django序列化

如果使用diango编辑web页面,加载一个页面,获取数据的方式有几个:

1.django代码获取数据,通过模板,在html中{{数据对象。数据名称}}这样来获取数据(不推荐)

2.使用ajax的方式在加载页面的同时向后台发送一个GET请求,获取页面数据,完成渲染。(推荐)这种方式里面可以采用的方式有如下两种(涉及今天的主题内容:django序列化):

方式一:ajax请求后,后台的返回值直接返回至一个新的html.py,将对象值遍历,再通过ajax回调函数,append入访问页面;(一个页面,两次请求)

可以看出,上面的方式是直接将数据与html脚本加载至访问页面,这种方式,如果数据量特别大,就会很浪费时间。其实可以只通过ajax加载数据,即下面的方式:

方式二:通过django序列化()

五、bytes转string

5.1 使用 str() 函数,将 bytes 序列转成字符串

bytedata = b'Hello \xe5\x97\xa8\xe5\xae\xa2\xe7\xbd\x91(HaiCoder)!'
dt = str(bytedata , 'utf-8')

5.1 使用 decode() 函数,将 bytes 序列转成字符串

bytedata = b'Hello \xe5\x97\xa8\xe5\xae\xa2\xe7\xbd\x91(HaiCoder)!'
dt = bytedata.decode('utf-8')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值