0

我阅读了以下页面:

https://docs.djangoproject.com/en/1.2/topics/http/decorators/

基本上,我在控制器中有一个只接受 POST 请求的函数。该页面上的文档允许我这样做。但是,我注意到当用户发送 GET 或 PUT 等时,响应实际上什么都没有。如何发送一般错误或 404 页面或其他内容?

4

3 回答 3

4

它什么也不返回。它返回 405 Method Not Allowed HTTP 状态代码。这向客户端表明不允许请求的方法(如名称所述)。

如果您一心想要退回其他东西,请不要使用装饰器。它所做的只是测试请求的方法是否在允许的方法列表中。只需将以下内容添加到您的视图代码中,您就可以为每个条件做任何您想做的事情:

if request.method in ['GET', 'POST']:
    // allowed
else:
    // not allowed
于 2012-07-03T14:50:05.610 回答
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例如,你不应该得到你的通用返回页面。到某个控制器?

于 2012-07-03T14:48:42.380 回答
0

试试这个 =) 祝你好运!

from django.http import HttpResponseNotAllowed

def my_view(request):
    if request.method != 'POST':
        return HttpResponseNotAllowed(permitted_methods=('POST',))
于 2012-07-03T14:53:12.103 回答