django 中的 request 物件

2021-09-24 00:10:57 字數 4007 閱讀 3531

我們知道當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 

email

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 ...