Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式

1、serializers

from django.core import serializers  #专门用来序列化django的类

data = serializers.serialize("序列化格式",QuerySet )

#data = serializers.serialize("json",QuerySet )

  serialize 方法的参数有二:一个序列化目标格式,另外一个是序列化的对象Django Model实例(一般情况下就是QuerySet)

2、json.dumps

  这时候也许有朋友就会问了为什么不直接用json.dumps来序列化呢?因为json.dumps只能序列化python提供的数据结构,Django Model实例是django提供的数据结构。但如果你要用json.dumps的话也不是不行:

data=list(QuerySet)#要先把QuerySet通过list方法成list对象
ret=json.dumps(data)

  但是,json不能处理时间类型(datatime),Python自带的json.dumps方法序列化数据时候如果格式化的数据中有datetime类型数据时候会报错。

  这时候就得自定义处理器来对json dumps做扩展:

import json
from datetime import date
from datetime import datetime class CJSONEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj,datetime.datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj,date):
return obj.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self,obj) # dl= json.dumps(datalist, cls=JsonCustomEncoder)

django的序列化问题的更多相关文章

  1. django的序列化

    关于django的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的Json格式 两种方法: 方法一:serializers: 缺点就是只能应用于对象 "&q ...

  2. django rest_framework 序列化组件详解

    为什么要用序列化组件 当我们做前后端分离的项目,我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转成json格式,那就需要对我们从数据库拿到 ...

  3. 从django的序列化到rest-framework 序列化

    1.利用Django的view实现返回json数据 from django.views.generic import View from goods.models import Goods class ...

  4. 关于Django的序列化

    阅读目录 Django支持的序列化格式 Django的序列化 Django支持的序列化格式 1 2 3 4 Identifier Information xml Serializes to and f ...

  5. Django 之 序列化

    Django之序列化 关于Django中的序列化主要应用在将数据库中检索的数据返回给客户端用户,特别的Ajax请求一般返回的为Json格式. serializers 1 2 3 4 5 from dj ...

  6. 【Django】序列化

    Django中序列化主要应用于将数据库中检索的数据返回给客户端用户,特别是Ajax请求一般返回为Json格式. * 1.from django.core import serializers** fr ...

  7. python Django rest-framework 序列化步骤

    django-rest-framework,是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包.本文介绍一下 django-rest-framework 的简单 ...

  8. django restframework 序列化

    Serialization 序列化 创建表 from django.db import models from pygments.lexers import get_all_lexers from p ...

  9. python3-开发进阶Django中序列化以及rest_framework的序列化

    一.django框架的序列化 直接上代码 1.这是app下的models.py from django.db import models # Create your models here. clas ...

随机推荐

  1. freemarker和jsp的比较

    1.共享变量 FreeMarker 的共享变量是我最喜欢的“隐藏”功能之一.此功能可以让你设置自动添加到所有模板的值. 例如,可以设置应用程序的名称作为共享变量. 1 2 Configuration ...

  2. linux学习笔记11---命令more

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上. more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会 ...

  3. 跟着百度学PHP[17]-PHP扩展CURL的POST传输数据

    如果是GET的话就不必那么多设置.但是基本需要用到POST就需要用到以下的几个设置选项. <?php $username = "admin"; $password = &qu ...

  4. .net , java webSocket 连接 Socket.io (1.4.4版本) 问题

    .net版Socketio4net类库和java版socket.io-java-client类库 连接socket.io 1.4版本都不行,网上大多是socket.io 0.9版本的,socket.i ...

  5. php 判断是否在微信浏览器中打开

    <?php $a=false; $b=$_SERVER['HTTP_USER_AGENT']; if(strpos($b,"MicroMessenger")===false) ...

  6. NIPS(Conference and Workshop on Neural Information Processing Systems)

    论文提交时间:5月下旬 会议时间:12月上旬 NIPS2017: 网址:https://nips.cc/

  7. 【BZOJ】2102: [Usaco2010 Dec]The Trough Game(暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2102 直接枚举所有情况......然后判断是否可行.. #include <cstdio> ...

  8. 蓝桥杯 第三届C/C++预赛真题(10) 取球游戏(博弈)

    今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1 ...

  9. (转)Unity笔记之编辑器(CurveField、DoubleField、EnumMaskField、EnumPopup) ... ...

    1. CurveField创建的是一个类型为AnimationCurve的曲线变量,看代码: [code]csharpcode: using UnityEngine; using System.Col ...

  10. jquery取iframe中元素

    采取方法: $("#iframe_path").contents().find(".select_path_hide").val(); DOM方法:父窗口操作I ...