如何在Django中返回HTTP 400响应?

时间:2014-05-06 10:21:14

标签: django python-2.7

如果请求GET数据无效且无法解析,我想从我的django视图函数返回HTTP 400响应。

我该怎么做?似乎没有像404那样的Exception类:

raise Http404

4 个答案:

答案 0 :(得分:41)

从我之前的评论:

您可以返回HttpResponseBadRequest

此外,您可以创建一个像Http404这样的Exception子类来拥有自己的Http400异常。

此致

答案 1 :(得分:21)

您可以执行以下操作:

from django.core.exceptions import SuspiciousOperation
raise SuspiciousOperation("Invalid request; see documentation for correct paramaters")

SuspiciousOperation映射到https://github.com/django/django/blob/master/django/core/handlers/base.py

第207行的400响应

答案 2 :(得分:10)

如果您正在使用Django Rest Framework,您可以通过两种方式在视图中引发400响应:

from rest_framework.exceptions import ValidationError, ParseError

raise ValidationError

# or 
raise ParseError

答案 3 :(得分:0)

自 Django 3.2 起,您还可以引发 BadRequest 异常:

from django.core.exceptions import BadRequest

raise BadRequest('Invalid request.')

在某些情况下,这可能比另一个答案中提到的 SuspiciousOperation 更好,因为它不记录安全事件;请参阅doc on exceptions