2010-05-30 93 views
8

雖然建議使用下面的結構來檢查請求是否是POST,檢查請求類型

if request.method == 'POST': 
    pass 

很可能人們會發現

if request.POST: 
    pass 

更優雅簡潔。

是否有任何理由不使用它,除了個人喜好?

+1

我認爲這是一個西納特拉使用更好的方法一個地方:你處理POST,PUT,GET,DELETE等有不同的處理程序。 我有一個名爲派遣我的API生成器根據HTML請求方法調用分割功能。 – 2010-05-30 05:36:11

+0

@Matthew Schinckel那豈不是會導致代碼的重複來電或來獲得一些常見的數據所需的功能至少重複,說用戶的列表? – Art 2010-05-30 05:54:57

+0

@藝術它不應該 – andho 2012-05-18 10:38:10

回答

12

的文檔是清楚這一點:

這有可能是一個請求可以通過POST進來一個空的POST字典 - 如果說,一種形式是通過POST HTTP方法請求,但不包含表單數據。所以,你不應該使用,如果request.POST來檢查使用POST方法;相反,使用request.method ==「POST」(見上文)。

>>> # assume an empty POST request would be treated as a dict 
>>> bool({}) 
False 
>>> # it would be a POST request, but request.POST would evaluate to False