我阅读了以下页面:
https://docs.djangoproject.com/en/1.2/topics/http/decorators/
基本上,我在一个只接受POST请求的控制器中有一个函数。该页面上的文档允许我这样做。但是,我注意到当用户发送GET或PUT等时,响应几乎没有。如何发送一般错误或404页面?
答案 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',))