關於django的序列化主要應用在將資料庫中檢索的資料返回給客戶端使用者,特別的ajax請求一般返回的json格式
兩種方法:
缺點就是只能應用於物件
"""ret = models.book.objects.filter(con)
print(ret) # queryset,[物件] #就是上面是列表
from django.core import serializers
#這種方法是django的自己的序列化方法,但是有個缺點,下面這句的ret只能是物件,所以只能用第二種方式
data = serializers.serialize("json", ret)
print(type(data),data)
# 字串
"""
"""但是json.dumps時無法處理datetime日期和小數,所以無法通過自定義處理器來做擴充套件,#ret = models.book.objects.filter(con).values('name','book_type__caption')
ret = models.book.objects.filter(con).values_list('name', 'book_typ__ecaption')
print(ret,type(ret))
li = list(ret)
#這種方式也有乙個缺點,就是date和小數的時候不能序列化,所以需要自定義類並繼承
data = json.dumps(li)
print(data,type(data))
"""
如:
import json那麼怎麼應用呢?from datetime import date
from datetime import datetime
from decimal import decimal
class jsoncustomencoder(json.jsonencoder):
def default(self, field):
if isinstance(field, datetime):
return field.strftime('%y-%m-%d %h:%m:%s')
elif isinstance(field, date):
return field.strftime('%y-%m-%d')
elif isinstance(field, decimal):
return str(field)
else:
return json.jsonencoder.default(self, field)
看案例:
importjson
from datetime import
date
from datetime import
datetime
from decimal import
decimal
class
jsoncustomencoder(json.jsonencoder):
defdefault(self, field):
ifisinstance(field, datetime):
return field.strftime('
%y-%m-%d %h:%m:%s')
elif
isinstance(field, date):
return field.strftime('
%y-%m-%d')
elif
isinstance(field, decimal):
return
str(field)
else
:
return
json.jsonencoder.default(self, field)
defindex(request):
if request.method == '
post':
ret =
try:
post_data = request.post.get('
post_data
',none)
post_data_dict =json.loads(post_data)
(post_data_dict)
##構造搜尋條件
from django.db.models import
q con =q()
for k,v in
post_data_dict.items():
q =q()
q.connector = 'or'
for item in
v: con.add(q,
'and')
"""ret = models.book.objects.filter(con)
print(ret) # queryset,[物件] #就是上面是列表
from django.core import serializers
#這種方法是django的自己的序列化方法,但是有個缺點,下面這句的ret只能是物件,所以只能用第二種方式
data = serializers.serialize("json", ret)
print(type(data),data)
# 字串
""""""
#ret = models.book.objects.filter(con).values('name','book_type__caption')
ret = models.book.objects.filter(con).values_list('name', 'book_typ__ecaption')
print(ret,type(ret))
li = list(ret)
#這種方式也有乙個缺點,就是date和小數的時候不能序列化,所以需要自定義類並繼承
Django的序列化
關於django中的序列化主要應用在將資料庫中檢索的資料返回給客戶端使用者,特別的ajax請求一般返回的為json格式。1 serializers,django內建 from django.core import serializers ret models.booktype.objects.all...
Django序列化與反序列化
新建乙個模型類 class userinfo models.model name models.charfield max length 20 password models.charfield max length 11 addkey models.foreignkey addressinfo c...
django序列化serializers過程解析
drf的核心 就是 前後端分離的核心 前後端分離開發的核心 django的序列化工具讓你可以將django的模型 翻譯 成其它格式的資料。通常情況下,這種其它格式的資料是基於文字的,並且用於資料交換 傳輸過程。序列化資料 django為我們提供了乙個強大的序列化工具serializers。使用它也很...