Django控制器要求方法

时间:2012-07-03 14:42:07

标签: python django

我阅读了以下页面:

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

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

3 个答案:

答案 0 :(得分:4)

它不会返回任何内容。它返回405 Method Not Allowed HTTP状态代码。这向客户端指示不允许所请求的方法(如名称所述)。

如果你在返回别的东西时已经死了,就不要使用装饰器。它所做的只是测试所请求的方法是否在允许的方法列表中。只需将以下内容添加到您的视图代码中,您就可以为每种条件执行任何操作:

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

答案 1 :(得分: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返回页面。到某个控制器?

答案 2 :(得分:0)

试试这个=)祝你好运!

from django.http import HttpResponseNotAllowed

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