Pycharm開發(fā)Django項(xiàng)目HttpResponse對(duì)象
HttpResponse對(duì)象
Django服務(wù)器接收到客戶端發(fā)送過來的請(qǐng)求后,會(huì)將提交上來的這些數(shù)據(jù)封裝成一個(gè)HttpRequest對(duì)象傳給視圖函數(shù)。那么視圖函數(shù)在處理完相關(guān)的邏輯后,也需要返回一個(gè)響應(yīng)給瀏覽器。而這個(gè)響應(yīng),我們必須返回HttpResponseBase或者他的子類的對(duì)象。而HttpResponse則是HttpResponseBase用得最多的子類。那么接下來就來介紹一下HttpResponse及其子類。
常用屬性:
content:返回的內(nèi)容。
status_code:返回的HTTP響應(yīng)狀態(tài)碼。
content_type:返回的數(shù)據(jù)的MIME類型,默認(rèn)為textcml。瀏覽器會(huì)根據(jù)這個(gè)屬性,來顯示數(shù)據(jù)。如果是textcml,那么就會(huì)解析這個(gè)字符串,如果text?ain,那么就會(huì)顯示一個(gè)純文本。常用的Content-Type如下:
textcml(默認(rèn)的,html文件)
text?ain(純文本)
text?s(css文件)
text/javascript(js文件)
multipart/form-data(文件提交)
application/json(json傳輸)
application/xml(xml文件)
設(shè)置請(qǐng)求頭:response['X-Access-Token'] = 'xxxx'。
常用方法:
set_cookie:用來設(shè)置cookie信息。后面講到授權(quán)的時(shí)候會(huì)著重講到。
delete_cookie:用來刪除cookie信息。
write:HttpResponse是一個(gè)類似于文件的對(duì)象,可以用來寫入數(shù)據(jù)到數(shù)據(jù)體(content)中。
JsonResponse類:
用來對(duì)象dump成json字符串,然后返回將json字符串封裝成Response對(duì)象返回給瀏覽器。并且他的Content-Type是application/json。示例代碼如下:
from django.http import JsonResponse
def index(request):
? ? return JsonResponse({"username":"zhiliao","age":18})
默認(rèn)情況下JsonResponse只能對(duì)字典進(jìn)行dump,如果想要對(duì)非字典的數(shù)據(jù)進(jìn)行dump,那么需要給JsonResponse傳遞一個(gè)safe=False參