Django作為一款高效、開(kāi)發(fā)速度快的Web開(kāi)發(fā)框架,其配合返回Json數(shù)據(jù)可以輕松實(shí)現(xiàn)前后端分離式開(kāi)發(fā),本文將介紹如何在Django中返回Json數(shù)據(jù)。
import json
from django.http import HttpResponse
def index(request):
data = {'name': 'Tom', 'age': 20}
return HttpResponse(json.dumps(data), content_type='application/json')
上面的代碼演示了一個(gè)簡(jiǎn)單的例子,使用json.dump將Python對(duì)象轉(zhuǎn)換為Json字符串,然后通過(guò)HttpResponse返回Json數(shù)據(jù),content_type設(shè)置正確的MIME類型是非常重要的。另外,如果返回的數(shù)據(jù)量非常大,還可以使用StreamingHttpResponse代替HttpResponse提高性能。
from django.http import StreamingHttpResponse
def index(request):
# 假設(shè)數(shù)據(jù)很大
data = b'{"name": "Tom", "age": 20}' * 1000
def stream():
yield data
response = StreamingHttpResponse(stream(), content_type='application/json')
response['Content-Disposition'] = 'attachment; filename="data.json"'
return response
上面的代碼給出了一個(gè)返回大量Json數(shù)據(jù)的例子,通過(guò)生成器來(lái)產(chǎn)生大量的數(shù)據(jù),并通過(guò)StreamingHttpResponse流式傳輸數(shù)據(jù),filename設(shè)置為"data.json"可讓瀏覽器自動(dòng)下載。
總結(jié)來(lái)說(shuō),通過(guò)Django返回Json數(shù)據(jù)可以輕松實(shí)現(xiàn)前后端分離,開(kāi)發(fā)效率高,性能優(yōu)秀,具有很強(qiáng)的靈活性和可擴(kuò)展性。