Django中Request和Response系列之十

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屬性

  • 請求格式:
  • 在請求地址結尾使用?梯码,之后以“鍵=值”的格式拼接,多個鍵值對之間以&連接好啰。

例:網址如下

http://www.baidu.com/?name=xiaoke&age=26&hobby=python

其中的請求參數為:

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艰毒。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搜囱,隨后出現的幾起案子丑瞧,更是在濱河造成了極大的恐慌,老刑警劉巖蜀肘,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绊汹,死亡現場離奇詭異,居然都是意外死亡扮宠,警方通過查閱死者的電腦和手機西乖,發(fā)現死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來坛增,“玉大人获雕,你說我怎么就攤上這事〗钨耍” “怎么了典鸡?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長坏晦。 經常有香客問我萝玷,道長,這世上最難降的妖魔是什么昆婿? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任球碉,我火速辦了婚禮,結果婚禮上仓蛆,老公的妹妹穿的比我還像新娘睁冬。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布豆拨。 她就那樣靜靜地躺著直奋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪施禾。 梳的紋絲不亂的頭發(fā)上脚线,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天,我揣著相機與錄音弥搞,去河邊找鬼邮绿。 笑死,一個胖子當著我的面吹牛攀例,可吹牛的內容都是我干的船逮。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼粤铭,長吁一口氣:“原來是場噩夢啊……” “哼挖胃!你這毒婦竟也來了?” 一聲冷哼從身側響起承耿,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤冠骄,失蹤者是張志新(化名)和其女友劉穎伪煤,沒想到半個月后加袋,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡抱既,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年职烧,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片防泵。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚀之,死狀恐怖,靈堂內的尸體忽然破棺而出捷泞,到底是詐尸還是另有隱情足删,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布锁右,位于F島的核電站失受,受9級特大地震影響,放射性物質發(fā)生泄漏咏瑟。R本人自食惡果不足惜拂到,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望码泞。 院中可真熱鬧兄旬,春花似錦、人聲如沸余寥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至绪撵,卻和暖如春呐馆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莲兢。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工汹来, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人改艇。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓收班,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谒兄。 傳聞我的和親對象是個殘疾皇子摔桦,可洞房花燭夜當晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內容