我阅读了以下页面:
https://docs.djangoproject.com/en/1.2/topics/http/decorators/
基本上,我在控制器中有一个只接受 POST 请求的函数。该页面上的文档允许我这样做。但是,我注意到当用户发送 GET 或 PUT 等时,响应实际上什么都没有。如何发送一般错误或 404 页面或其他内容?
我阅读了以下页面:
https://docs.djangoproject.com/en/1.2/topics/http/decorators/
基本上,我在控制器中有一个只接受 POST 请求的函数。该页面上的文档允许我这样做。但是,我注意到当用户发送 GET 或 PUT 等时,响应实际上什么都没有。如何发送一般错误或 404 页面或其他内容?
它什么也不返回。它返回 405 Method Not Allowed 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',))