31)django-序列化
目录
1)序列化
2)为什么不用json序列化
3)django序列化QuerySet,
ErrorDict数据
一:序列化
序列化是将对象状态转换为可保持或传输的格式的过程
反序列化是指将存储在存储媒体中的对象状态装换成对象的过程
二:为什么不用json序列化
json序列化只能序列python自己对象:比如字符串,数据,字典等。但是像时间,django Queryset 或者是ErrorDict类型数据不能直接序列化。
三:django序列化QuerySet,
ErrorDict数据
1)对QuerySet序列化
2)ErrorDict序列化 #1)对QuerySet序列化
-自定义encoder
-对models.tb.objects.all()序列化
#第一种
django提供序列化
from django.core import serializers
v=models.tb.objects.all()
data=serializers.serialize("json",v) #第二种
v=models.tb.objects.all().values("id","name")
v=list(v)#把Queryset直接转列表
v=json.dumps(v) 但是如果有ctime类型,就不能直接使用 json.dumps(v,cls="XX")去定制 第一种方法把所有字段都列表出了。第二种可以定制,比如只显示name等 #2)ErrorDict序列化(也有两种,as_json as_data)
详细例子:http://www.cnblogs.com/lixiang1013/p/7892181.html
class JsonCustomEncoder(json.JSONEncoder):
from django.core.exceptions import ValidationError
def default(self, field):
if isinstance(field,ValidationError):
return {'code':field.code,'message':field.messages}
else:
return json.JSONEncoder.default(self,field) def login(request):
res={"status":False,"data":None,"error":None}
if request.method=="GET":
return render(request,"login.html")
elif request.method=="POST":
obj=LoginForm(request.POST)
if obj.is_valid():
print(obj.cleand_data)
res["status"]=True
else:
#res["error"]=obj.errors.as_json()
#print(obj.errors.as_data())#errors.as_data()返回的是 ValidationError类型,不是字典,不能直接序列化
res["error"]=obj.errors.as_data()
result=json.dumps(res,cls=JsonCustomEncoder)#dumps有个参数cls,可以定制 return HttpResponse(json.dumps(result))
31)django-序列化的更多相关文章
- 通过ajax GET方式查询数据,Django序列化objects
点击“查找2”按钮,通过ajax GET方式进行查询数据,这样页面不需要整体刷新,之后清空tbody数据,将查询结果重新附加到tbody 前端html: <div class="box ...
- Django序列化
一.Django序列化 1.序列化应用场景 1.关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,由于httpresponse只能返回字符串或者是字节,而从数据库 ...
- Django序列化&django REST framework
第一章.Django序列化操作 1.django的view实现商品列表页(基于View类) # 通过json来序列化,但手写字典key代码量较大,容易出错:还有遇到时间,图片序列化会报错 from g ...
- Python 之 Django框架( Cookie和Session、Django中间件、AJAX、Django序列化)
12.4 Cookie和Session 12.41 cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务 ...
- Django 序列化
序列化 背景 对于Django 的queryset 对象在传递给 前端的时候,前端是无法识别的 因此需要存在一个转换过程将 queryset 对象转换成 字符串前端才可以识别 演示 QuerySet ...
- Django(序列化、SweetAlert插件)
day72 参考:https://www.cnblogs.com/liwenzhou/p/8718861.html#autoid-6-1-2 前端序列化 后端序列化 day73中 补充一个SweetA ...
- django序列化 serializers
Django的序列化工具让你可以将Django的模型‘翻译’成其它格式的数据.通常情况下,这种其它格式的数据是基于文本的,并且用于数据交换\传输过程. 一.序列化数据 Django为我们提供了一个强大 ...
- django序列化单表的4种方法的介绍
这里主要是讲序列化单表的几种方法 先看下models中设计的表结构 from django.db import models # Create your models here. class Book ...
- Django 序列化三种方式 对象 列表 元组
1.xuliehua.html <html lang="en"> <head> <meta charset="UTF-8"> ...
- Python菜鸟之路:Django 序列化数据
类型一:对于表单数据进行序列化 这时需要用到ErrorDict. ret['errors'] = obj.errors.as_data() result = json.dumps(ret, cls=J ...
随机推荐
- Spring MVC整合Mybatis 入门
本文记录使用Intellij创建Maven Web工程搭建Spring MVC + Mybatis 的一个非常简单的示例.关于Mybatis的入门使用可参考这篇文章,本文在该文的基础上,引入了Spri ...
- MySQL Connector 编程
MySQL Connector 是MySQL数据库客户端编程的接口, 它提供了通过网络访问数据库的接口, 这些功能在动态链接库(.dll, .so)或者静态对象库(.lib, .a)中实现. 使用时必 ...
- es6 javascript对象方法Object.assign() 对象的合并复制等
Object.assign方法用于对象的合并,将源对象( source )的所有可枚举属性,复制到目标对象( target ). 详细使用稳步到前辈: http://blog.csdn.net/qq_ ...
- 比较好用的Copy代码到博客VS扩展工具
这个工具叫做TrimCopy,可以避免拷贝出来的代码带空格,影响布局.
- inetd的工作流程
- 使用Nginx在windows和linux上搭建集群
Nginx Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器 特点:反向代理 负载均衡 动静分离… 反向代理(Reverse Pro ...
- Ubuntu18.04下Python Web环境搭建
Python3的安装与卸载 pip, pip3的安装 Django2.x的安装 mysql的安装及命令行工具mycli的安装 virtualenv及virtualenvwrapper的安装 IPyth ...
- Hbase思维导图之调优
- 计算价格, java中浮点数精度丢失的解决方案
计算价格, java中浮点数精度丢失的解决方案
- shiro-5基于url的权限管理
1.1 搭建环境 1.1.1 数据库 mysql5.1数据库中创建表:用户表.角色表.权限表(实质上是权限和资源的结合 ).用户角色表.角色权限表. 完成权限管理的数据模型创建. 1.1.2 开发环境 ...