我們知道當urlconf檔案匹配到使用者輸入的路徑後,會呼叫對應的view函式,並將httprequest物件作為第乙個引數傳入該函式。
django 每乙個view函式的第乙個引數都是request,有沒想過request裡面到底有什麼呢?
django使用request和response物件在系統間傳遞狀態。
當乙個頁面被請示時,django建立乙個包含請求元資料的 httprequest 物件。 然後django調入合適的檢視,把httprequest 作為檢視函式的第乙個引數 傳入。每個檢視要負責返回乙個 httpresponse 物件。
httprequest例項的屬性包含了關於此次請求的大多數重要資訊。 除了session外的所有屬性都應該認為是唯讀的.
我們來看一看這個httprequest物件有哪些屬性或者方法:
請求的協議,一般為http或者https,字串格式(以下屬性中若無特殊指明,均為字串格式)
http請求的主體,二進位制格式。
所請求頁面的完整路徑(但不包括協議以及網域名稱),也就是相對於**根目錄的路徑。
獲取具有 url 副檔名的資源的附加路徑資訊。相對於httprequest.path,使用該方法便於移植。
獲取該請求的方法,比如: get post .........
獲取請求中表單提交資料的編碼。
獲取請求的mime型別(從content_type頭部中獲取),django1.10的新特性。
獲取content_type中的鍵值對引數,並以字典的方式表示,django1.10的新特性。
返回乙個querydict物件(類似於字典,本文最後有querydict的介紹),該物件包含了所有的http get引數
返回乙個querydict,該物件包含了所有的http post引數,通過表單上傳的所有字元都會儲存在該屬性中
返回乙個包含了所有cookies的字典。
返回乙個包含了所有的上傳檔案的querydict物件。通過表單所上傳的所有檔案都會儲存在該屬性中。key的值是input標籤中name屬性的值,value的值是乙個uploadedfile物件
返回乙個包含了所有http頭部資訊的字典 (如下:)
server_port – the port of the server (as a string).中介軟體屬性(session資訊)
中介軟體屬性
中介軟體屬性,表示當前登入的使用者。
httprequest.user實際上是由乙個定義在django.contrib.auth.models 中的user model類 所建立的物件。
該類有許多字段,屬性和方法。列舉幾個常用的: 獲取更詳細資訊-->官方文件。
1 字段:
username使用者名稱
first_name
last_name
password
groups
user_permissions,
is_staff 布林值,標明使用者是否可以訪問admin頁面
is_superuser
last_login上一次登陸時間
date_joined使用者建立時間
2 屬性
is_authenticated 布林值,標誌著使用者是否已認證。在django1.10之前,沒有該屬性,但有與該屬性同名的方法。
3 方法
1 httprequest.user.get_username() 注意:方法的圓括號在templates標籤中必需省略!!
獲取username。盡量使用該方法來代替使用username欄位
2 httprequest.user.get_full_name() 注意:方法的圓括號在templates標籤中必需省略!!
獲取first_name和last_name
3 httprequest.user.short_name() 注意:方法的圓括號在templates標籤中必需省略!!
獲取first_name
4 httprequest.user.set_password(raw_password) 注意:該方法無法在template標籤中使用!!
設定密碼
5 httprequest.user.check_password(raw_password) 注意:該方法無法在template標籤中使用!!
如果raw_password與使用者密碼相等,則返回true
方法:
返回請求的源主機。example: 127.0.0.1:8000
django1.9的新特性。
返回完整路徑,幷包括附加的查詢資訊。example:"/music/bands/the_beatles/?print=true"
返回location的絕對uri,location預設為request.get_full_path()。
example: ""
是乙個類似於python中字典的一種物件,他是python中字典的子類,所以繼承了字典的所有方法,
當然querydict對字典的某些方法進行了加工,並補充了一些獨特的方法。這裡列出部分方法。詳情請看: 官方文件 。
1 querydict.get(key,default=none) 返回key所對應的value,若key不存在,則返回default的值
2 querydict.update(other_dict) 更新
3 querydict.values() 列出所有的值
4 querydict.items() 列出所有的鍵值對,若乙個key有多個值,只顯示最後乙個值。
5 querydict.pop(key) 刪除某個鍵值對
6 querydict.getlist(key) 根據輸入的key返回乙個python中的list
7 querydict.dict() 返回querydict的字典的表現形式
django中request的GET小記
views.py from django.shortcuts import render 展示鏈結的頁面 defgettest1 request return render request,booktest gettest1.html 接收一鍵一值的情況 defgettest2 request 根據...
詳解Django中Request物件的相關用法
這篇文章主要介紹了詳解django中request物件的相關用法,django是python重多人氣框架中最著名的乙個,需要的朋友可以參考下 從request物件中獲取資料 我們在第三章講述view的函式時已經介紹過httprequest物件了,但當時並沒有講太多。讓我們回憶下 每個view函式的第...
django中request物件的屬性和方法
1.request物件方法和屬性 2.常用request.meta屬性 request.meta 是乙個python字典,包含了所有本次http請求的header資訊,常用屬性包括 注意有些使用者的user agent的字串獲取不了,所以使用python的get方法request.meta.get ...