我閱讀以下頁面:Django的控制器要求方法
https://docs.djangoproject.com/en/1.2/topics/http/decorators/
基本上,我有在控制器只接受POST請求的功能。並且該頁面上的文檔允許我這樣做。然而,我注意到,當用戶發送GET或PUT等,反應幾乎一無所有。我怎樣才能發送一個通用的錯誤或404頁面或什麼?
我閱讀以下頁面:Django的控制器要求方法
https://docs.djangoproject.com/en/1.2/topics/http/decorators/
基本上,我有在控制器只接受POST請求的功能。並且該頁面上的文檔允許我這樣做。然而,我注意到,當用戶發送GET或PUT等,反應幾乎一無所有。我怎樣才能發送一個通用的錯誤或404頁面或什麼?
它不返回任何結果。它返回一個405方法不允許的HTTP狀態碼。這表明該請求的方法是不允許的(如名稱描述)的客戶端。
如果您在返回別的東西死心塌地,只是不使用裝飾。它所做的只是測試所請求的方法是否在允許的方法列表中。只需添加以下到您的視圖代碼,你可以做任何你想要的每一個條件:
if request.method in ['GET', 'POST']:
// allowed
else:
// not allowed
我不記得它是否是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
爲如。到某個控制器?
試試這個=)祝你好運!
from django.http import HttpResponseNotAllowed
def my_view(request):
if request.method != 'POST':
return HttpResponseNotAllowed(permitted_methods=('POST',))
這就是裝飾* *已經做,所以不是一個真正的解決方案。 –
嗯,其實是相同的溶液,作爲裝飾。 – nicowernli
是啊......正在考慮這樣做。但是不確定是否有使用上面裝飾器的通用方法。 – KVISH