1. 程式人生 > >django中的request物件

django中的request物件

Request

  我們知道當URLconf檔案匹配到使用者輸入的路徑後,會呼叫對應的view函式,並將  HttpRequest物件  作為第一個引數傳入該函式。

  我們來看一看這個HttpRequest物件有哪些屬性或者方法:

 

屬性:

1  HttpRequest.scheme       請求的協議,一般為http或者https,字串格式(以下屬性中若無特殊指明,均為字串格式)

2  HttpRequest.body        http請求的主體,二進位制格式。

3  HttpRequest.path             所請求頁面的完整路徑(但不包括協議以及域名),也就是相對於網站根目錄的路徑。

4  HttpRequest.path_info     獲取具有 URL 副檔名的資源的附加路徑資訊。相對於HttpRequest.path,使用該方法便於移植。

if the WSGIScriptAlias for your application is set to "/minfo", then path might be "/minfo/music/bands/the_beatles/" and path_info would be "/music/bands/the_beatles/".

5  HttpRequest.method               獲取該請求的方法,比如: GET   POST .........

6  HttpRequest.encoding             獲取請求中表單提交資料的編碼。

7  HttpRequest.content_type      獲取請求的MIME型別(從CONTENT_TYPE頭部中獲取),django1.10的新特性。

8  HttpRequest.content_params  獲取CONTENT_TYPE中的鍵值對引數,並以字典的方式表示,django1.10的新特性。

9  HttpRequest.GET                    返回一個 querydict 物件(類似於字典,本文最後有querydict的介紹),該物件包含了所有的HTTP GET引數

10  HttpRequest.POST                返回一個 querydict ,該物件包含了所有的HTTP POST引數,通過表單上傳的所有  字元  都會儲存在該屬性中。

11  HttpRequest.COOKIES        返回一個包含了所有cookies的字典

12  HttpRequest.FILES           返回一個包含了所有的上傳檔案的  querydict  物件。通過表單所上傳的所有  檔案  都會儲存在該屬性中。

                                               key的值是input標籤中name屬性的值,value的值是一個UploadedFile物件

13  HttpRequest.META                返回一個包含了所有http頭部資訊的字典

  View Code

14  HttpRequest.session       中介軟體屬性

15  HttpRequest.site        中介軟體屬性

16  HttpRequest.user       中介軟體屬性,表示當前登入的使用者。

   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

 

方法:

1  HttpRequest.get_host()            返回請求的源主機。example:  127.0.0.1:8000

2  HttpRequest.get_port()            django1.9的新特性。

3  HttpRequest.get_full_path()     返回完整路徑,幷包括附加的查詢資訊。example:  "/music/bands/the_beatles/?print=true"

4  HttpRequest.bulid_absolute_uri(location)      返回location的絕對uri,location預設為request.get_full_path()。

    Example: "https://example.com/music/bands/the_beatles/?print=true"

 

 


 

QueryDict 

  是一個類似於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的字典的表現形式