Django JSonResponse對(duì)象的實(shí)現(xiàn)
JsonResponse 是 HttpResponse 的子類,與父類的區(qū)別在于:
- JsonResponse 默認(rèn) Content-Type 類型為 application/json
- HttpResponse 默認(rèn)為 application/text
class JsonResponse(HttpResponse): ? ? def __init__(self, data, encoder=DjangoJSONEncoder, safe=True, ? ? ? ? ? ? ? ? ? ? json_dumps_params=None, **kwargs):
HttpResponse
HttpResponse 每次將數(shù)據(jù)返回給前端需要用 json 模塊序列化,且前端也要反序列化:
# views.py import json def index(request): ? ? message = '請(qǐng)求成功' ? ? # ret = {'message': '請(qǐng)求成功'} ? ? return HttpResponse(json.dumps(message)) ? ?# 序列化 # index.html $.ajax({ ? ? url: '/accounts/ajax/', ? ? type: 'post', ? ? data: { ? ? ? ? 'p': 123, ? ? ? ? csrfmiddlewaretoken: '{{ csrf_token }}' ? ? }, ? ? # 反序列化,或使用 json.parse(arg) ? ? dataType: "JSON", ? ? ? ? ? success: function (arg) { ? ? ? ? console.log(arg.message); ? ? } })
JsonResponse
JsonResponse 只能序列化字典格式,不能序列化字符串,且前端不用反序列化:
from django.http import JsonResponse def index(request): ? ? ret = {'message': '請(qǐng)求成功'} ? ? return JsonResponse(ret) ? ?# 序列化 # index.html $.ajax({ ? ? url: '/accounts/ajax/', ? ? type: 'post', ? ? data: { ? ? ? ? 'p': 123, ? ? ? ? csrfmiddlewaretoken: '{{ csrf_token }}' ? ? }, ? ? # 不需要反序列化 ? ? # dataType: "JSON", ? ? ? ? ? success: function (arg) { ? ? ? ? console.log(arg.message); ? ? ? # 請(qǐng)求成功 ? ? } })
總結(jié)
- HTTPResponse 后端要用 json 模塊序列化,前端也要反序列化。
- JSonResponse 前端不用反序列化,只能傳輸字典,不能傳輸字符串。
到此這篇關(guān)于Django JSonResponse對(duì)象的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Django JSonResponse對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在python3中pyqt5和mayavi不兼容問(wèn)題的解決方法
今天小編就為大家分享一篇在python3中pyqt5和mayavi不兼容問(wèn)題的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Python中使用裝飾器和元編程實(shí)現(xiàn)結(jié)構(gòu)體類實(shí)例
Python中使用裝飾器和元編程實(shí)現(xiàn)結(jié)構(gòu)體類實(shí)例,本文的方法算是一種Python的黑魔法技術(shù),并非Python的常規(guī)寫法,需要的朋友可以參考下2015-01-01完美解決Pycharm無(wú)法導(dǎo)入包的問(wèn)題 Unresolved reference
今天小編就為大家分享一篇完美解決Pycharm無(wú)法導(dǎo)入包的問(wèn)題 Unresolved reference,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05pycharm設(shè)置虛擬環(huán)境與更換鏡像教程
這篇文章主要介紹了pycharm設(shè)置虛擬環(huán)境與更換鏡像教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09PyQt5基本控件使用詳解:單選按鈕、復(fù)選框、下拉框
這篇文章主要介紹了PyQt5基本控件使用:單選按鈕、復(fù)選框、下拉框,本文中的內(nèi)容和實(shí)例也基本回答了開(kāi)篇提到的問(wèn)題。需要的朋友可以參考下2019-08-08Python技巧匿名函數(shù)、回調(diào)函數(shù)和高階函數(shù)
本文分享的是Python技巧匿名函數(shù)、回調(diào)函數(shù)和高階函數(shù),我們?cè)赑ython中使用lambda表達(dá)式來(lái)使用匿名函數(shù),回調(diào)函數(shù)即callback,先寫一個(gè)函數(shù),讓預(yù)先寫好的系統(tǒng)來(lái)調(diào)用,一個(gè)函數(shù)可以作為參數(shù)傳給另外一個(gè)函數(shù),或者一個(gè)函數(shù)的返回值為另外一個(gè)函數(shù),滿足其一則為高階函數(shù)2021-12-12