使用Django已經(jīng)很簡(jiǎn)單仔蝌,如今前后端分離已經(jīng)開始普及泛领,那么對(duì)于我們前端來說,我們只需要拿到接口就可以了敛惊。雖然django的模板也很好用渊鞋,但畢竟我們做前后端分離開發(fā),vue、react離我們更近一些锡宋,所以我們使用django只需要實(shí)現(xiàn)符合restful規(guī)范的接口就可以了儡湾。
那么接下來就給大家分享一下Django返回前端數(shù)據(jù)的幾種方法:
Serialize----序列化django對(duì)象
序列化 —— 將程序中的一個(gè)數(shù)據(jù)結(jié)構(gòu)類型轉(zhuǎn)換為其他格式(字典、JSON执俩、XML等)徐钠,例如將Django中的模型類對(duì)象裝換為JSON字符串,這個(gè)轉(zhuǎn)換過程稱為序列化役首。即后端數(shù)據(jù)轉(zhuǎn)給前端尝丐。
- 首先我們?yōu)槭裁葱枰褦?shù)據(jù)序列化?
我們可能會(huì)有這樣的需求:
- 把內(nèi)存中的各種數(shù)據(jù)類型保存到本地進(jìn)行數(shù)據(jù)持久化
- 把內(nèi)存中的各種數(shù)據(jù)類型通過網(wǎng)絡(luò)傳送給其他機(jī)器或者客戶端
首先我們先了解一下Python與Json之間數(shù)據(jù)類型的對(duì)應(yīng)關(guān)系
articles = Article.objects.all()
打印出來打印出的QuerySet 是Model的列表衡奥。
serializers.serialize('json', articles, ensure_ascii=False)
再次打印出來爹袁!
此時(shí)拿到的就是純字符串,只需要將字符串解析一下就ok了矮固。
import json
json.loads(serializers.serialize('json', articles, ensure_ascii=False))
然后如果我們要把拿到的數(shù)據(jù)發(fā)送給前端失息,只需要封裝成json對(duì)象,使用JsonResponse
返回給前端就可以了
from django.http import JsonResponse
def article_lists(request):
articles = Article.objects.all()
return JsonResponse({
'code': '0000',
'data': json.loads(serializers.serialize('json', articles, ensure_ascii=False)),
'msg': '獲取文章列表成功'
})
那么我們通過瀏覽器看一下得到的數(shù)據(jù)~~~
太棒了乏屯,我們已經(jīng)成功拿到數(shù)據(jù)了~ 不過根时,這數(shù)據(jù)怎么看起來有點(diǎn)...額... 這到底怎么回事? 能不能換種更優(yōu)雅的方式瘦赫? ~ 那么請(qǐng)繼續(xù)關(guān)注我3皆巍!确虱!下篇文章告訴大家更簡(jiǎn)單的更優(yōu)雅的方法含友。