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 |
