1
.在views.pyh中
from django.core.serializers import serialize, deserialize
defget_user
(request)
: users = user.objects.
all(
) context = serialize(
'json'
, users, fields=
('name'
,'age'))
#fields為要序列化的字段
return jsonresponse(context, safe=
false
)# 將列表轉換成json響應物件,需設定safe=false
2.在前端js中先將收到的資料轉換為json格式,再迴圈取值
$.ajax(
, datatype:
'json'
,async
: false,
success: function (data))}
})
2.1 在models.py中,有兩張**user和iphone(一對一)
from django.db import models
# create your models here.
class
user
(models.model)
: ***_choice =((
1,'man'),
(2,'woman'),
) name = models.charfield(
'姓名'
, max_length=20,
) age = models.integerfield(
'年齡'
) *** = models.smallintegerfield(
'性別'
, choices=***_choice, default=1)
@property
def***_choice
(self)
:for ***_choice in self.***_choice:
if self.*** in ***_choice:
return ***_choice
class
meta
: db_table =
'user'
verbose_name =
'使用者表'
verbose_name_plural = verbose_name
def__str__
(self)
:return self.name
class
iphone
(models.model)
: user = models.onetoonefield(user, verbose_name=
'使用者'
) phone_num = models.charfield(
'**'
, max_length=20)
class
meta
: db_table =
'iphone'
verbose_name =
'**表'
verbose_name_plural = verbose_name
def__str__
(self)
:return
%(self.user.name, self.phone_num )
2.2 在models.py同一資料夾下新建serializer.py 寫入
from rest_framework import serializers
#該類用於將user類進行序列化
class
userserializer
(serializers.serializer)
: name = serializers.charfield(max_length=20)
age = serializers.integerfield(
)# 該類用於將iphone類序列化
class
iponeserializer
(serializers.serializer)
: phone_num = serializers.charfield(max_length=20)
# 欄位和model中iphone一一對應,不需要序列化的字段可以不寫
user = serializers.serializermethodfield(
)# 一對一外來鍵
defget_user
(self, obj)
:# 外來鍵對應的方法,獲取對應關聯user的name欄位
return obj.user.name
在views.py中,改寫如下
from rest_framework.response import response
from rest_framework.views import apiview
from user.models import iphone
from
.serializer import iponeserializer
class
phoneview
(apiview)
:# 父類由view改為apiview
defget
(self, request)
: phone = iphone.objects.
all(
) context = iponeserializer(phone, many=
true
)return response(context.data)
# 使用rest_framework.response.response代替httpresponse類
前端獲取到的資料如下:
[
, ,
]
待續.
..
Django序列化與反序列化
新建乙個模型類 class userinfo models.model name models.charfield max length 20 password models.charfield max length 11 addkey models.foreignkey addressinfo c...
序列化與反序列化的簡便實用封裝 續
之前寫過一篇有關.net中序列化與反序列化的文章,之後又幾次用到。但是當時沒有將其整個 放在我的部落格中,後來朋友認為這個 使用隨方便但是希望看到原始碼,而自己又不知道這個是怎麼實現的,希望看到原始碼。下面我就把這個序列化與凡序列化的原始碼放在部落格裡,滿足大家要求。很多朋友認為這麼靈活的介面是不是...
django的序列化
關於django的序列化主要應用在將資料庫中檢索的資料返回給客戶端使用者,特別的ajax請求一般返回的json格式 兩種方法 缺點就是只能應用於物件 ret models.book.objects.filter con print ret queryset,物件 就是上面是列表 from djang...