Подтвердить что ты не робот

Как вернуть ответ HTTP 400 в Django?

Я хочу вернуть ответ HTTP 400 из моей функции просмотра django, если данные запроса GET недействительны и не могут быть проанализированы.

Как мне это сделать? Кажется, что не существует соответствующего класса Exception, например, для 404:

raise Http404
4b9b3361

Ответ 1

Из моего предыдущего комментария:

Вы можете вернуть HttpResponseBadRequest

Кроме того, вы можете создать подкласс Exception, такой как Http404, чтобы иметь собственное исключение Http400.

Привет,

Ответ 2

Вы можете сделать следующее:

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

SuspiciousOperation сопоставляется с ответом 400 вокруг строки 207 https://github.com/django/django/blob/master/django/core/handlers/base.py

Ответ 3

Если вы используете Django Rest Framework, у вас есть два способа повышения ответа 400 в представлении:

from rest_framework.exceptions import ValidationError, ParseError

raise ValidationError

# or 
raise ParseError