python request(HttpRequest對象)請求的屬性、方法筆記


1.屬性

  1. path:表示提交請求頁面完整地址的字符串,不包括域名,如"/music/bands/the_beatles/"。
  2. method:表示提交請求使用的HTTP方法。(GET、POST)
  3. GET:一個類字典對象,包含所有的HTTP的GET參數的信息。
  4. POST:一個類字典對象,包含所有的HTTP的POST參數的信息。注意: POST 並不 包含文件上傳信息。
  5. REQUEST:為了方便而創建,這是一個類字典對象,先搜索 POST ,再搜索 GET 。強烈建議使用 GET 和 POST,而不是 REQUEST 。
  6. COOKIES:一個標准的Python字典,包含所有cookie。鍵和值都是字符串。
  7. FILES:一個類字典對象,包含所有上傳的文件。 FILES 的鍵來自 <input type="file" name="" /> 中的 name。 FILES 的值是一個標准的Python字典,包含以下三個鍵: filename :字符串,表示上傳文件的文件名。content-type :上傳文件的內容類型。content :上傳文件的原始內容。注意 FILES 只在請求的方法是 POST,並且提交的 <form> 包含enctype="multipart/form-data"時才包含數據。否則, FILES 只是一個空的類字典對象。
  8. META:

    一個標准的Python字典,包含所有有效的HTTP頭信息。有效的頭信息與客戶端和服務器有關。這里有幾個例子:

    CONTENT_LENGTH: 指定包含於請求或響應中數據的字節長度。

    CONTENT_TYPE:標明發送或者接收的實體的MIME類型。

    QUERY_STRING :未解析的原始請求字符串。

    REMOTE_ADDR :客戶端IP地址。

    REMOTE_HOST :客戶端主機名。

    SERVER_NAME :服務器主機名。

    SERVER_PORT :服務器端口號。

    在 META 中有效的任一HTTP頭信息都是帶有 HTTP_前綴的鍵,例如:

    HTTP_ACCEPT_ENCODING :定義客戶端可以理解的編碼機制。

    HTTP_ACCEPT_LANGUAGE :定義客戶端樂於接受的自然語言列表。

    HTTP_HOST :客戶端發送的 Host 頭信息。

    HTTP_REFERER :被指向的頁面,如果存在的。

    HTTP_USER_AGENT :客戶端的user-agent字符串。

    HTTP_X_BENDER : X-Bender 頭信息的值,如果已設的話。

  9. user:一個 django.contrib.auth.models.User 對象表示當前登錄用戶。

  10. session:一個可讀寫的類字典對象,表示當前session。僅當Django已激活session支持時有效。

  11. raw_post_data:POST的原始數據。 用於對數據的復雜處理。

2.方法

  1. __getitem__(key):請求所給鍵的GET/POST值,先查找POST,然后是GET。若鍵不存在,則引發異常 KeyError。該方法使用戶可以以訪問字典的方式來訪問一個 HttpRequest實例。例如, request["foo"] 和先檢查 request.POST["foo"] 再檢查request.GET["foo"] 一樣。
  2. has_key():返回 True 或 False,標識 request.GET 或 request.POST 是否包含所給的鍵。
  3. get_full_path():返回 path 
  4. is_secure():如果請求是安全的,則返回 True 。也就是說,請求是以HTTPS的形式提交的。

3.Querty對象

在一個 HttpRequest 對象中, GET和POST屬性都是 django.http.QueryDict 的實例. QueryDict 是一個類似字典的類,被設計成可以處理同一個鍵有多個值的情況.這是很必要的,因為有些 HTML 表單元素,特別是``<select multiple="multiple">``,使用一個鍵來傳遞多個值

QueryDict 實例是不可變對象,除非你創建他們的一個拷貝.這意味着你不能直接改變 request.POST 和 request.GET 的值.

QueryDict 實現了所有的標准字典方法,因為它就是 dictionary 的一個子類.下文中對與標准字典不一致的地方做了標注:

        __getitem__(key) -- 返加給定鍵的值. 如果該鍵有多個值, __getitem__ 返回最后一個值.

        __setitem__(key, value) -- 將 key 的值設置為 [value] (一個Python 列表,只有一個元素 value).注意,這個方法象其它字典方法一個擁有副作用,只能被一個可變的 QueryDict 對象調用.(一個通過`` copy()``創建的副本).

        __contains__(key) -- 如果給定鍵存在,返回 True. 它允許你這么干: if "foo" in request.GET.

        get(key, default) --類似 __getitem__() ,如果該鍵不存在,返回一個默認值.

        has_key(key)

        setdefault(key, default) -- 類似標准字典的 setdefault(),不同之處在於它內部使用的是 __setitem__().

        update(other_dict) -- 類似標准字典的 update(), 唯一的不同是它將 other_dict 的元素追加到(而不是替換到)當前字典中. 示例:

        >>> q = QueryDict('a=1')
        >>> q = q.copy() # to make it mutable
        >>> q.update({'a': '2'})
        >>> q.getlist('a')
        ['1', '2']
        >>> q['a'] # returns the last
        ['2']

        items() -- 類似標准字典的 items() 方法, 類似 __getitem__() 的邏輯,它使用最后一個值. 示例:

        >>> q = QueryDict('a=1&a=2&a=3')
        >>> q.items()
        [('a', '3')]

        values() -- 類似標准字典的 values() 方法,類似 __getitem__() 的邏輯,它使用最后一個值.示例:

        >>> q = QueryDict('a=1&a=2&a=3')
        >>> q.values()
        ['3']

除了這些之外,``QueryDict`` 還擁有下列方法:

        copy() -- 返回當前對象的一個拷貝,它使用標准庫中的 深拷貝 方法. 這個拷貝是可變的,也就是說你可以改變這個拷貝的值.

        getlist(key) -- 以一個Python列表的形式返回指定鍵的值.若該鍵不存在,返回一個空的列表.該列表是以某種方式排序的.

        setlist(key, list_) -- 不同於 __setitem__() ,將給定的鍵的值設置為一個列表.

        appendlist(key, item) -- 將給定鍵對應的值(別忘了,它是一個列表)追加一個 item.

        setlistdefault(key, default_list) -- 就象 setdefault ,不過它接受一個列表作為值而不是一個單一的值.

        lists() -- 就象 items(),不過它包含所有的值(以列表的方式):

        >>> q = QueryDict('a=1&a=2&a=3')
        >>> q.lists()
        [('a', ['1', '2', '3'])]

        urlencode() -- 以一個查詢字符串的形式返回一個字符串. Example: "a=2&b=3&b=5".


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM