在介紹 Django 內(nèi)置的響應(yīng)類(lèi)之前,讀者需要了解 HTTP 的響應(yīng)方式。
首先:網(wǎng)站的運(yùn)行原理是遵從 HTTP 協(xié)議,分為 HTTP 請(qǐng)求和 HTTP 響應(yīng)。HTTP 響應(yīng)方式也稱(chēng)為 HTTP 狀態(tài)碼,分為5中狀態(tài):消息、成功、重定向、請(qǐng)求錯(cuò)誤和服務(wù)器錯(cuò)誤。若以使用頻率劃分,則 HTTTP 狀態(tài)碼可分為:成功、重定向和異常響應(yīng)(請(qǐng)求錯(cuò)誤和服務(wù)器錯(cuò)誤)。
其次:在 Django 中,視圖函數(shù)是通過(guò) return 方式返回響應(yīng)內(nèi)容,然后生成相應(yīng)的網(wǎng)頁(yè)內(nèi)容呈現(xiàn)在瀏覽器上。return 是 Python 的內(nèi)置語(yǔ)法,用于設(shè)置函數(shù)的返回值,若要設(shè)置不同的相應(yīng)方式,則需要 Django 內(nèi)置的響應(yīng)類(lèi),如下所示:
響應(yīng)類(lèi)型 說(shuō)明
HttpResponse('Hello world') 狀態(tài)碼200,請(qǐng)求已成功被服務(wù)器接收
HttpResponseRedirect('/') 狀態(tài)碼302,重定向首頁(yè)地址
HttpResponsePermanentRedirect('/') 狀態(tài)碼301,永久重定向首頁(yè)地址
HttpResponseBadRequest('400') 狀態(tài)碼400,訪問(wèn)的頁(yè)面不存在或請(qǐng)求錯(cuò)誤
HttpResponseNotFound('404') 狀態(tài)碼404,網(wǎng)頁(yè)不存在或網(wǎng)頁(yè)的URL失效
HttpResponseForbidden('403') 狀態(tài)碼403,沒(méi)有訪問(wèn)權(quán)限
HttpResponseNotAllowed('405') 狀態(tài)碼405,不允許使用該請(qǐng)求方式
HttpResponseServerError('500') 狀態(tài)碼500,服務(wù)器內(nèi)容錯(cuò)誤
JsonResponse({'foo':'bar'}) 默認(rèn)狀態(tài)碼200,響應(yīng)內(nèi)容為JSON數(shù)據(jù)
StreamingHttpResponse() 默認(rèn)狀態(tài)碼200,響應(yīng)內(nèi)容以流式輸出
不同的響應(yīng)方式代表不同的 HTTP 狀態(tài)碼,其核心作用是 Web Server 服務(wù)器用來(lái)告訴瀏覽器當(dāng)前的網(wǎng)頁(yè)請(qǐng)求發(fā)生了什么事,或者當(dāng)前 Web 服務(wù)器的響應(yīng)狀態(tài)。上述的相應(yīng)類(lèi)主要來(lái)自于模塊 django.http,該模塊是實(shí)現(xiàn)響應(yīng)功能的核心。
希望以上內(nèi)容對(duì)各位有所幫助。