2012-07-03 40 views

回答

4

它不返回任何結果。它返回一個405方法不允許的HTTP狀態碼。這表明該請求的方法是不允許的(如名稱描述)的客戶端。

如果您在返回別的東西死心塌地,只是不使用裝飾。它所做的只是測試所請求的方法是否在允許的方法列表中。只需添加以下到您的視圖代碼,你可以做任何你想要的每一個條件:

if request.method in ['GET', 'POST']: 
    // allowed 
else: 
    // not allowed 
+0

是啊......正在考慮這樣做。但是不確定是否有使用上面裝飾器的通用方法。 – KVISH

0

我不記得它是否是request.method或者我沒有在任何機器上安裝Django來仔細檢查,但類似的東西可以工作。

@require_http_methods(["GET", "POST"]) 
def my_view(request): 
    if request.method == 'GET': 
     # return a 404 or something 
    # or 
    if request.method != 'POST': 
     # return a 404 or something 

但你不應該讓你的普通405 - Method not allowed返回頁面,如果你只允許POST爲如。到某個控制器?

0

試試這個=)祝你好運!

from django.http import HttpResponseNotAllowed 

def my_view(request): 
    if request.method != 'POST': 
     return HttpResponseNotAllowed(permitted_methods=('POST',)) 
+0

這就是裝飾* *已經做,所以不是一個真正的解決方案。 –

+0

嗯,其實是相同的溶液,作爲裝飾。 – nicowernli