Django-03 請(qǐng)求和響應(yīng)

1,請(qǐng)求

  • 請(qǐng)求是指瀏覽器端通過(guò)HTTP協(xié)議發(fā)送給服務(wù)器端的數(shù)據(jù)
  • 響應(yīng)是指服務(wù)器端接收到請(qǐng)求后做相應(yīng)處理后再回復(fù)給瀏覽器端的數(shù)據(jù)


    請(qǐng)求樣例.png
序號(hào) 方法 描述
1 GET 請(qǐng)求指定的頁(yè)面信息,并返回實(shí)體主體
2 HEAD 類(lèi)似于get請(qǐng)求,只不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭
3 POST 向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改
4 PUT 從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容
5 DELETE 請(qǐng)求服務(wù)器刪除指定的頁(yè)面
6 CONNECT HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器
7 OPTIONS 允許客戶端查看服務(wù)器的性能
8 TRACE 回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷
Django中的請(qǐng)求對(duì)象
  • 請(qǐng)求在Django中其實(shí)就是視圖函數(shù)的第一個(gè)參數(shù),即HttpRequest對(duì)象
  • Django接收到http協(xié)議的請(qǐng)求后,會(huì)根據(jù)請(qǐng)求數(shù)據(jù)報(bào)文創(chuàng)建HttpRequest對(duì)象
  • HttpRequest對(duì)象 通過(guò)屬性描述了請(qǐng)求的所有相關(guān)信息
    • path_info:URL字符串
    • method:字符串,表示HTTP請(qǐng)求的方法,常用值:'GET'、'POST'
    • GET:QueryDict查詢字典的對(duì)象,包含get請(qǐng)求方式的所有數(shù)據(jù)
    • POST:QueryDict查詢字典的對(duì)象,包含post請(qǐng)求方式的所有數(shù)據(jù)
    • FILES:類(lèi)似字典的對(duì)象,包含所有的上傳文件信息
    • COOKIES:Python字典,包含所有的cookie,鍵和值都為字符串
    • session:類(lèi)似字典的對(duì)象,表示當(dāng)前的會(huì)話
    • body:字符串,請(qǐng)求體的內(nèi)容(POST或PUT)
    • scheme:請(qǐng)求協(xié)議('http'/'https')
    • request.get_full_path():請(qǐng)求的完整路徑
    • request.META:請(qǐng)求中的元數(shù)據(jù)(消息頭)
      • request.META['REMOTE_ADDR']:客戶端IP地址
def test_request(request):
    print('path info is',request.path_info)
    print('method is',request.method)
    print('querystring is',request.GET)
    return HttpResponse('test request ok')

打?。?/p>

path info is /test_request
method is GET
querystring is <QueryDict: {'a': ['1'], 'b': ['2']}>

2,響應(yīng)

響應(yīng)樣例.png
響應(yīng)狀態(tài)碼(HTTP Status Code)
  • 200 - 請(qǐng)求成功
  • 301 - 永久重定向-資源(網(wǎng)頁(yè)等)被永久轉(zhuǎn)移到其他URL
  • 302 - 臨時(shí)重定向
  • 404 - 請(qǐng)求的資源(網(wǎng)頁(yè)等)不存在
  • 500 - 內(nèi)部服務(wù)器錯(cuò)誤

HTTP狀態(tài)碼由3個(gè)十進(jìn)制數(shù)字組成,第一個(gè)十進(jìn)制定義了狀態(tài)碼的類(lèi)型,后兩個(gè)數(shù)字沒(méi)有分類(lèi)的作用。HTTP狀態(tài)碼共分為5種類(lèi)型:

分類(lèi) 分類(lèi)描述
1** 信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作
2** 成功,操作被成功接收并處理
3** 重定向,需要進(jìn)一步的操作以完成請(qǐng)求
4** 客戶端錯(cuò)誤,請(qǐng)求包含語(yǔ)法錯(cuò)誤或無(wú)法完成請(qǐng)求
5** 服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過(guò)程中發(fā)生了錯(cuò)誤
Django中的響應(yīng)對(duì)象

構(gòu)造函數(shù)格式:
HttpReponse(content=響應(yīng)體,content_type=響應(yīng)體數(shù)據(jù)類(lèi)型,status=狀態(tài)碼)
作用:
向客戶端瀏覽器返回響應(yīng),同時(shí)攜帶響應(yīng)體內(nèi)容

  • 參數(shù):
    • content:表示返回的內(nèi)容
    • status_code:返回的http響應(yīng)狀態(tài)碼(默認(rèn)為200)
    • content_type:指定返回?cái)?shù)據(jù)的MIME類(lèi)型(默認(rèn)為"text/html")。瀏覽器會(huì)根據(jù)這個(gè)屬性,來(lái)顯示數(shù)據(jù)。如果是text/html,那么就會(huì)解析這個(gè)字符串,如果text/plain,那么就會(huì)顯示一個(gè)純文本
常用的Content-Type如下:
  • 'text/html'(默認(rèn)的,html文件)
  • 'text/plain'(純文本)
  • 'text/css'(css文件)
  • 'text/javascript'(js文件)
  • 'multipart/form-data'(文件提交)
  • 'application/json'(json傳輸)
  • 'application/xml'(xml文件)
HttpResponse子類(lèi)
類(lèi)型 作用 狀態(tài)碼
HttpResponseRedirect 重定向 302
HttpResponseNotModified 未修改 304
HttpResponseBadRequest 錯(cuò)誤請(qǐng)求 400
HttpRespnoseForbidden 請(qǐng)求被禁止 403
HttpResponseServerError 服務(wù)器錯(cuò)誤 500
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容