django的序列化問題


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) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM