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乙個類字典物件,包含所有的http的get引數的資訊。見 querydict文件。
post
乙個類字典物件,包含所有的http的post引數的資訊。見 querydict文件。
通過post提交的請求有可能包含乙個空的 post字典,也就是說,
乙個通過post方法提交的表單可能不包含資料。因此,不應該使用ifrequest.post 來判斷post方法的使用,而是使用 ifrequest.method == "post" (見表中的 method 條目)。
注意: post 並
不包含檔案上傳資訊。見 files。
request
為了方便而建立,這是乙個類字典物件,先搜尋 post ,再搜尋 get 。
靈感來自於php的 $_reqeust 。
例如,若 get = , post = ,
request["name"] 會是 "john" ,
request["age"] 會是 "34" 。
強烈建議使用 get 和 post,而不是
request
。這是為了向前相容和更清楚的表示。
cookies
乙個標準的
python
字典,包含所有cookie。鍵和值都是字串。cookie使用的更多資訊見第12章。
files
乙個類字典物件,包含所有上傳的檔案。 files 的鍵來自
中的 name。 files 的值是乙個標準的
python
字典,包含以下三個鍵:
filename :字串,表示上傳檔案的檔名。
content-type :上傳檔案的內容型別。
content :上傳檔案的原始內容。
注意 files 只在請求的方法是 post,並且提交的
包含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 表單元素,特別是````,使用乙個鍵來傳遞多個值
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()
>>> 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__() ,將給定的鍵的值設定為乙個列表.
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 表示提交請求頁面完整位址的字串,不包括網域名稱,如 music bands the beatles method 表示提交請求使用的...
菜鳥初識python request屬性及方法說明
if request.request.has key 鍵值 httprequest物件的屬性 參考 表 h 1.httprequest物件的屬性 屬性描述 path 表示提交請求頁面完整位址的字串,不包括網域名稱,如 music bands the beatles method 表示提交請求使用的h...
python request鍵值判斷
if request.request.has key 鍵值 httprequest物件的屬性 參考 表 h 1.httprequest物件的屬性 屬性 描述path 表示提交請求頁面完整位址的字串,不包括網域名稱,如 music bands the beatles method 表示提交請求使用的h...