1断盛,HttpRequest知識總結
定義:
服務器接收到http協(xié)議的請求后,會根據報文創(chuàng)建HttpRequest對象,這個對象不需要我們創(chuàng)建教寂,直接使用服務器構造好的對象就可以。視圖的第一個參數必須是HttpRequest對象执庐,在django.http模塊中定義了HttpRequest對象的API酪耕。
屬性:
path:一個字符串,表示請求的頁面的完整路徑轨淌,不包含域名迂烁。
method:一個字符串,表示請求使用的HTTP方法递鹉,常用值包括:'GET'盟步、'POST'。
在瀏覽器中給出地址發(fā)出請求采用get方式躏结,如超鏈接址芯。
在瀏覽器中點擊表單的提交按鈕發(fā)起請求,如果表單的method設置為post則為post請求窜觉。
encoding:一個字符串谷炸,表示提交的數據的編碼方式。
如果為None則表示使用瀏覽器的默認設置禀挫,一般為utf-8旬陡。
這個屬性是可寫的,可以通過修改它來修改訪問表單數據使用的編碼
GET:一個類似于字典的對象语婴,包含get請求方式的所有參數描孟。
POST:一個類似于字典的對象驶睦,包含post請求方式的所有參數。
FILES:一個類似于字典的對象匿醒,包含所有的上傳文件场航。
COOKIES:一個標準的Python字典,包含所有的cookie廉羔,鍵和值都為字符串溉痢。
session:一個既可讀又可寫的類似于字典的對象,表示當前的會話憋他,只有當Django 啟用會話支持時才可用
QueryDict對象
- 定義在django.http.QueryDict
- HttpRequest對象的屬性GET孩饼、POST都是QueryDict類型的對象
- 與python字典不同,QueryDict類型的對象用來處理同一個鍵帶有多個值的情況
方法get():根據鍵獲取值
如果一個鍵同時擁有多個值將獲取最后一個值
如果鍵不存在則返回None值竹挡,可以設置默認值進行后續(xù)處理
dict.get('鍵',默認值)
可簡寫為
dict['鍵']
方法getlist():根據鍵獲取值镀娶,值以列表返回,可以獲取指定鍵的所有值
如果鍵不存在則返回空列表[]揪罕,可以設置默認值進行后續(xù)處理
dict.getlist('鍵',默認值)
GET屬性
- 請求格式:
- 在請求地址結尾使用?梯码,之后以“鍵=值”的格式拼接,多個鍵值對之間以&連接好啰。
例:網址如下
其中的請求參數為:
name=xiaoke&age=26&hobby=python
分析請求參數:
鍵為'name'忍些、'age'、'hobby'坎怪,值為'xiaoke'罢坝、'26'、'python'搅窿。
在Django中可以使用HttpRequest對象的GET屬性獲得get方方式請求的參數嘁酿。
GET屬性返回QueryDict類型的對象,鍵和值都是字符串類型男应。
鍵是開發(fā)人員在編寫代碼時確定下來的闹司。
值是根據數據生成的。
POST屬性
- 使用form表單請求時沐飘,method方式為post則會發(fā)起post方式的請求游桩,需要使用HttpRequest對象的POST屬性接收參數,POST屬性返回QueryDict類型的對象耐朴。
問:表單form如何提交參數呢借卧?
答:控件name屬性的值作為鍵,value屬性的值為值筛峭,構成鍵值對提交铐刘。
如果控件沒有name屬性則不提交。
對于checkbox控件影晓,name屬性的值相同為一組镰吵,被選中的項會被提交檩禾,出現一鍵多值的情況。
鍵是控件name屬性的值疤祭,是由開發(fā)人員編寫的盼产。
值是用戶填寫或選擇的。
2,HttpResponse對象
定義
視圖在接收請求并處理后勺馆,必須返回HttpResponse對象或子對象戏售。在django.http模塊中定義了HttpResponse對象的API。HttpRequest對象由Django創(chuàng)建谓传,HttpResponse對象由開發(fā)人員創(chuàng)建蜈项。
屬性
- content:表示返回的內容芹关。
- charset:表示response采用的編碼字符集续挟,默認為utf-8。
- status_code:返回的HTTP響應狀態(tài)碼侥衬。
- content-type:指定返回數據的的MIME類型诗祸,默認為'text/html'。
方法
- init:創(chuàng)建HttpResponse對象后完成返回內容的初始化轴总。
- set_cookie:設置Cookie信息直颅。
- write:向響應體中寫數據。
- cookie是網站以鍵值對格式存儲在瀏覽器中的一段純文本信息怀樟,用于實現用戶跟蹤功偿。
-- max_age是一個整數,表示在指定秒數后過期往堡。
-- expires是一個datetime或timedelta對象械荷,會話將在這個指定的日期/時間過期。
-- max_age與expires二選一虑灰。
如果不指定過期時間吨瞎,在關閉瀏覽器時cookie會過期。
set_cookie(key, value='', max_age=None, expires=None)
- delete_cookie(key):刪除指定的key的Cookie穆咐,如果key不存在則什么也不發(fā)生颤诀。
子類JsonResponse
在瀏覽器中使用javascript發(fā)起ajax請求時,返回json格式的數據对湃。類JsonResponse繼承自HttpResponse對象崖叫,被定義在django.http模塊中,創(chuàng)建對象時接收字典作為參數拍柒。
- JsonResponse對象的content-type為'application/json'归露。
子類HttpResponseRedirect
當一個邏輯處理完成后,不需要向客戶端呈現數據斤儿,而是轉回到其它頁面剧包,如添加成功恐锦、修改成功、刪除成功后顯示數據列表疆液,而數據的列表視圖已經開發(fā)完成一铅,此時不需要重新編寫列表的代碼,而是轉到這個視圖就可以堕油,此時就需要模擬一個用戶請求的效果潘飘,從一個視圖轉到另外一個視圖,就稱為重定向掉缺。
- Django中提供了HttpResponseRedirect對象實現重定向功能卜录,這個類繼承自HttpResponse,被定義在django.http模塊中眶明,返回的狀態(tài)碼為302艰毒。