當前位置:成語大全網 - 書法字典 - 字典設置項

字典設置項

HttpRequest對象

HttpRequest代表來自客戶端的單獨的HTTP請求。

HttpRequest實例的屬性包含關於這個請求的最重要的信息(有關詳細信息,請參見表H-1)。除會話外的所有屬性都應被視為只讀。

表h-1。httprequest對象的屬性

屬性

形容

Path是壹個字符串,表示提交請求頁面的完整地址,不包括域名,如“/music/bands/the_beatles/”。

方法

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

if request.method == 'GET ':

做某事()

elif request.method == 'POST ':

do_something_else()

獲取壹個類字典對象,包含HTTP GET參數的所有信息。請參見QueryDict文檔。

郵政

壹個類字典對象,包含HTTP的POST參數的所有信息。請參見QueryDict文檔。

通過POST提交的請求可能包含壹個空的POST字典,也就是說,通過POST方法提交的表單可能不包含數據。因此,如果要求話。不應該用POST來判斷POST方法的使用,而是if request.method == "POST "(見表中方法條目)。

註意:帖子不包含文件上傳信息。參見文件。

請求

為方便起見而創建的,這是壹個類字典對象,先搜索POST,再搜索GET。受PHP的$ _ REQEUST啟發。

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

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

cookies是壹個包含所有COOKIES的標準Python字典。鍵和值都是字符串。有關cookie使用的更多信息,請參見第12章。

文件

包含所有上傳文件的類字典對象。文件的密鑰來自

Filename:表示上傳文件的文件名的字符串。

內容類型:上傳文件的內容類型。

內容:上傳文件的原始內容。

請註意,僅當請求的方法是POST並提交時,文件才可用

元宇宙

包含所有有效HTTP頭信息的標準Python字典。有效的報頭信息與客戶端和服務器相關。這裏有幾個例子:

內容長度

內容類型

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

遠程_ADDR:客戶端IP地址。

REMOTE_HOST:客戶端的主機名。

SERVER_NAME:服務器主機名。

SERVER_PORT:服務器端口號。

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

HTTP _接受_編碼

HTTP _接受_語言

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

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

HTTP_USER_AGENT:客戶端的用戶代理字符串。

http _ x _ bender:x-bender頭信息的值,如果設置的話。

用戶

django . contrib . auth . models . user對象表示當前登錄的用戶。如果當前用戶沒有登錄,用戶將被設置為django的壹個實例。contrib.auth.models .匿名用戶。它們可以與is_authenticated()區分開來:

if request . user . is _ authenticated():

#為登錄用戶做點什麽。

否則:

#為匿名用戶做點什麽。

僅當Django激活AuthenticationMiddleware時,用戶才有效。

請參見第12章,了解有關身份驗證和用戶的完整詳細信息。

Session表示當前會話的可讀可寫的類字典對象。僅在Django激活會話支持時有效。參見第12章。

發布原始數據。用於復雜的數據處理。

請求對象還包含壹些有用的方法,如表H-2所示。

表H-2。HttpRequest方法

方法

形容

__getitem__(關鍵字)

請求給定鍵的GET/POST值,首先查找POST,然後是GET。如果該鍵不存在,將引發異常KeyError。

該方法使用戶能夠通過訪問字典來訪問HttpRequest的實例。

例如,request["foo"]與checking request相同。在檢查請求之前發布["foo"]。GET["foo"]。

Has_key()返回True或False,指示是否請求。獲取或請求。POST包含給定的鍵。

Get_full_path()返回path,如果請求字符串有效,則追加到它後面。比如“/音樂/樂隊/the _ beats/?print=true .

如果請求是安全的,Is_secure()返回True。換言之,請求是以HTTPS的形式提交的。

QueryDict對象

在HttpRequest對象中,GET和POST屬性都是django.http.QueryDict QueryDict是壹個類似於字典的類,專門用來處理壹鍵多值。當處理壹些HTML表單中的元素時,尤其是

翻譯....

除非創建了copy()副本,否則QueryDict實例是不可變的。也就是說,請求的屬性。發布和請求。GET不能直接更改。

QueryDict實現了所有標準的字典方法,因為它是字典的子類。與它不同的壹切都已列在表H-3中。

表H-3。查詢詞典和標準詞典的區別

方法

不同於標準詞典。

__getitem__與字典相同。但是,當壹個鍵有多個值時,__getitem__()返回最後壹個值。

__setitem__將給定鍵的值設置為[value](只有壹個value元素的Python列表)。註意,它只能被稱為變量QueryDict(由copy()創建),因為它對其他字典函數有副作用。

Get()如果壹個鍵有多個值,比如__getitem__,get()返回最後壹個值。

更新()

該參數是查詢字典或標準字典。和標準詞典

更新就不同了,這個方法*增加*而不是替換壹個內容:

& gt& gt& gtq = QueryDict('a=1 ')

& gt& gt& gtQ = q.copy() #使其成為變量。

& gt& gt& gtq.update({'a': '2'})

& gt& gt& gtq.getlist('a ')

['1', '2']

& gt& gt& gtQ['a'] #返回最後壹個值。

['2']

項目()

與標準字典中的items()方法類似,不同之處在於它像__getitem()__壹樣返回最後壹個值:

& gt& gt& gtq = query dict(' a = 1 & amp;a = 2 & ampa = 3’)

& gt& gt& gtq.items()

[('a ',' 3')]

Values()與標準字典中的values()方法相同,只是它像__getitem()__壹樣返回最後壹個值。

此外,QueryDict具有表H-4中列出的方法。

表H-4。其他(非字典)查詢方法

方法

形容

Copy()使用Python標準庫中的copy.deepcopy()返回對象的副本。副本是可變的,也就是說,您可以更改它的值。

Getlist(key)以Python列表的形式返回所請求的鍵的數據。如果該鍵不存在,則返回壹個空列表。它保證將返回某種形式的列表。

Setlist(key,list_)將給定鍵的鍵值設置為list_(不同於__setitem__())。

Appendlist(key,item)將項目添加到與key相關的列表中。

Setlistdefault(key,l)與setdefault相同,只是它的第二個參數是列表而不是值。

列表()

與items()壹樣,不同之處在於它以列表的形式返回字典中每個成員的所有值。例如:

& gt& gt& gtq = query dict(' a = 1 & amp;a = 2 & ampa = 3’)

& gt& gt& gtq.lists()

[('a ',['1 ',' 2 ',' 3'])]

Urlencode()返回請求字符串格式的數據字符串(例如,“A = 2 &;b = 3 & ampb=5”).

完整的例子。

例如,給定以下HTML表單:

& ltform action = "/foo/bar/" method = " post " >

& ltinput type = " text " name = " your _ name "/& gt;

& ltselect multiple = " multiple " name = " bands " & gt;

& ltoption value = " beatles " & gt甲殼蟲樂隊& lt/option & gt;

& ltoption value = " who " & gt誰& lt/option & gt;

& ltoption value = " zombies " & gt僵屍& lt/option & gt;

& lt/select & gt;

& ltinput type = " submit "/& gt;

& lt/form & gt;

如果用戶在your_name中輸入“John Smith”,在多選框中選擇了披頭士和僵屍,那麽下面是Django的請求對象所具有的內容:

& gt& gt& gt請求。得到

{}

& gt& gt& gt請求。郵政

{ '您的姓名':['約翰·史密斯'],'樂隊':['披頭士','僵屍']}

& gt& gt& gt請求。發布['您的姓名']

約翰·史密斯

& gt& gt& gt請求。帖子['樂隊']

僵屍

& gt& gt& gt請求。POST.getlist('波段')

[《披頭士》,《僵屍》]

& gt& gt& gt請求。POST.get('您的姓名','阿德裏安')

約翰·史密斯

& gt& gt& gt請求。POST.get('不存在_字段','無處人')

無處可去的人

使用時請註意:

Get、post、cookies、files、meta、request、raw _ post _ data、user都是延遲加載。也就是說,Django不會花費資源去計算這些屬性值,除非是在代碼中訪問。