Django框架全面讲解 -- 序列化

本文详细介绍了Django中序列化的主要应用场景,特别是如何处理Ajax请求返回的Json格式数据。同时对比了Python中json和pickle模块的功能,并展示了如何使用Django自带的serializers模块以及json.dumps方法来序列化数据。
摘要由CSDN通过智能技术生成

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

json     用于【字符串】和 【python基本数据类型】 间进行转换
pickle   用于【python特有的类型】 和 【python基本数据类型】间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

Json.loads()用于将字典,列表形式的字符串转换成相应的字典,列表

Json.dump()将基本数据类型,列表,字典,转换成字符串

pickle模块提供了四个功能:dumps、dump、loads、load

 1. serializers


from django.core import serializers

ret = models.BookType.objects.all()

data = serializers.serialize("json", ret)

 2. json.dumps


import json

#ret = models.BookType.objects.all().values('caption')
ret = models.BookType.objects.all().values_list('caption')

ret=list(ret)

result = json.dumps(ret)

由于json.dumps时无法处理datetime日期,所以可以通过自定义处理器来做扩展,如:

import json 
from datetime import date 
from datetime import datetime 

class JsonCustomEncoder(json.JSONEncoder): 

    def default(self, field): 

        if isinstance(field, datetime): 
            return o.strftime('%Y-%m-%d %H:%M:%S') 
        elif isinstance(field, date): 
            return o.strftime('%Y-%m-%d') 
        else: 
            return json.JSONEncoder.default(self, field) 

# ds = json.dumps(d, cls=JsonCustomEncoder) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值