1. 程式人生 > >python request屬性及方法說明

python request屬性及方法說明

if  request.REQUEST.has_key('鍵值'):

HttpRequest物件的屬性

參考:

 H-1. HttpRequest物件的屬性

屬性

描述

path

表示提交請求頁面完整地址的字串,不包括域名,如"/music/bands/the_beatles/"

method

表示提交請求使用的HTTP方法。它總是大寫的。例如:

if request.method == 'GET':

    do_something()

elif request.method == 'POST':

    do_something_else()

GET

一個類字典物件,包含所有的HTTPGET引數的資訊。見 QueryDict文件。

POST

一個類字典物件,包含所有的HTTPPOST引數的資訊。見 QueryDict文件。

通過POST提交的請求有可能包含一個空的 POST字典,也就是說, 一個通過POST方法提交的表單可能不包含資料。因此,不應該使用ifrequest.POST 來判斷POST方法的使用,而是使用 ifrequest.method == "POST" (見表中的 method 條目)。

注意: POST  包含檔案上傳資訊。見 FILES

REQUEST

為了方便而建立,這是一個類字典物件,先搜尋

 POST ,再搜尋 GET 靈感來自於PHP $_REQEUST 

例如,  GET = {"name": "john"} POST = {"age": '34'} REQUEST["name"] 會是 "john"  REQUEST["age"] 會是 "34" 

強烈建議使用 GET  POST,而不是 REQUEST 。這是為了向前相容和更清楚的表示。

COOKIES

一個標準的Python字典,包含所有cookie。鍵和值都是字串。cookie使用的更多資訊見第12章。

FILES

一個類字典物件,包含所有上傳的檔案。 FILES 的鍵來自

 <input type="file" name="" /> 中的 name FILES 的值是一個標準的Python字典,包含以下三個鍵:

filename :字串,表示上傳檔案的檔名。

content-type :上傳檔案的內容型別。

content :上傳檔案的原始內容。

注意 FILES 只在請求的方法是 POST,並且提交的 <form> 包含enctype="multipart/form-data"時才包含資料。否則, FILES 只是一個空的類字典物件。

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 頭資訊的值,如果已設的話。

user

一個 django.contrib.auth.models.User 物件表示當前登入使用者。 若當前使用者尚未登入, user 會設為django.contrib.auth.models.AnonymousUser 的一個例項。可以將它們與 is_authenticated() 區別開:

if request.user.is_authenticated():

    # Do something for logged-in users.

else:

    # Do something for anonymous users.

user 僅當Django啟用 AuthenticationMiddleware時有效。

關於認證和使用者的完整細節,見第12章。

session

一個可讀寫的類字典物件,表示當前session。僅當Django已啟用session支援時有效。見第12章。

raw_post_data

POST的原始資料。 用於對資料的複雜處理。

Request物件同樣包含了一些有用的方法,見表H-2

 H-2. HttpRequest 的方法

方法

描述

__getitem__(key)

請求所給鍵的GET/POST值,先查詢POST,然後是GET。若鍵不存在,則引發異常 KeyError

該方法使使用者可以以訪問字典的方式來訪問一個HttpRequest 例項。

例如, request["foo"] 和先檢查 request.POST["foo"] 再檢查 request.GET["foo"] 一樣。

has_key()

返回 True  False,標識 request.GET request.POST 是否包含所給的鍵。

get_full_path()

返回 path ,若請求字串有效,則附加於其後。例如,"/music/bands/the_beatles/?print=true"

is_secure()

如果請求是安全的,則返回 True 。也就是說,請求是以HTTPS的形式提交的。




QueryDict 物件

在一個 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".

相關推薦

python request屬性方法說明

if  request.REQUEST.has_key('鍵值'): HttpRequest物件的屬性 參考: 表 H-1. HttpRequest物件的屬性 屬性 描述 path 表示提交請求頁面完整地址的字串,不包括域名,如"/m

Python中類的屬性方法的總結python改寫memocache啟動指令碼舉例

1.類的屬性總結 類屬性,也是公有屬性, 類的私有屬性, 物件的共有屬性, 物件的私有屬性, 內建屬性, 函式的區域性變數, 全域性變數, #/usr/bin/env python # -*- coding:utf-8 -*- class

Python 動態新增屬性方法

     Python是一門動態語言,動態語言的一個主要的特性就是你那個在執行時,新增屬性以及方法。不同於靜態語言(例如c,c++,java......)他們都是通過編譯後在執行指定的編譯後的檔案。Python與他們最大的不同就是Python是動態的,程式碼的更改,無需重新編

Python學習筆記(一):list屬性方法淺析

列表學習。 List是python中的基本資料結構之一。建立一個列表的方法 L = [1,2,3,'a'] 通過help(list)檢視列表的屬性及方法。 >>> help(list) Help on class list in module builti

Ext.grid.GridPanel屬性方法

ble sse rst 可能 colspan ask gridpanel ted elm Ext.grid.GridPanel屬性及方法等 1、Ext.grid.GridPanel主要配置項:store:表格的數據集columns:表格列模式的配置數組,可自動創建

字符串的屬性方法

body ase tor subst ring upper repl 方式 char // 創建字符串 var str = ‘hello world!‘; // 通過構造函數的方式 // var str = new String(‘

常用 Math 屬性方法

之間 mat blank sqrt rand round .com () floor Math 對象 Math.PI π 3.141592653589793 Math.ceil(‘2.5‘) Math.ceil(2.1) 向上取整

字串屬性方法大總結

字串屬性及方法 .length                       

陣列屬性方法大總結

陣列屬性及方法 .length                      陣列長度

RN中ScrollView的屬性方法介紹

一個封裝了平臺的ScrollView(滾動檢視)的元件,同時還集成了觸控鎖定的“響應者”系統。可以在裡面設定樣式, 首先是ScrollView底部不能顯示的問題,在之前的部落格中也說過,可以檢視下, horizontal={true} 預設為false,此屬性為true是表示為橫向滾動

Python==request,requestsdumps,loads

1 request 1.1 get請求 from flask import request #get引數 variable = 'abcd' request.args.get('variable') #form引數 <form> <input name="va

python--私有屬性--私有方法

Class 定義類   def 初始化方法(形參)             屬性1     屬性2   私有屬性(屬性之前加--)        def  方法1()     pr

Python屬性方法

import types class Dog(object): __slots__ = ("name", "color", "info") #定義__slots__

JavaScript中易混淆的DOM屬性方法對比

JavaScript中易混淆的DOM屬性及方法對比 ParentNode.children VS Node.prototype.childNodes ParentNode.children:該屬性繼承自ParentNode,返回值是一個HTMLCollection例項,成員是當前節點的所有元素子節點,該屬

java列舉自定義屬性方法例子

 列舉enum 的全稱為 enumeration, 是 JDK 1.5  中引入的新特性,存放在 java.lang 包中。 列舉定義類: package enums; public enum SexEnum { Man("Tom"){ public St

ListView的屬性方法詳解

近期在重新學習Android控制元件知識,目前進行到ListView,感覺這是一塊尤其難啃的硬骨頭:最為常用、用法較複雜、涉及的其他Android知識也較多。因此決定系統地好好複習一遍ListView。其中涉及到的其他知識點將在後期以連結的形式不斷進行更新。 本文僅介紹L

windows media player 控制元件的常用屬性方法【轉載】

RealPlayer的一些函式、方法和過程 這是 Real Player ActiveX Control Library (Version 1.0) 的所有函式與方法,有興趣可以研究一下。 function GetSource: WideString; procedure SetSource(const lp

UITouch【觸控】屬性方法

UITouch.h【觸控】 //當用戶用一根手指觸控式螢幕幕時,會建立一個與手指相關聯的UITouch物件,一根手指對應一個UITouch物件 //UITouch的作用儲存著跟手指相關的資訊,比如觸控的位置、時間、階段 //當手指移動時,系統會更新同一個UITouch物

Unity3D中Animation的常見屬性方法

Unity3D中Animation的常見屬性及方法如下: Animation.Play播放 function Play (mode : PlayMode = PlayMode.StopSameLayer) : bool function Play (animation : string, mode :

Delphi類的靜態屬性方法

Because Delphi not provide static member for our using, so if you want a static member of class in Delphi what should I do ? Ok! At leas