I want to return a HTTP 400 response from my django view function if the request GET data is invalid and cannot be parsed.
How do I do this? There does not seem to be a corresponding Exception class like there is for 404:
raise Http404 I want to return a HTTP 400 response from my django view function if the request GET data is invalid and cannot be parsed.
How do I do this? There does not seem to be a corresponding Exception class like there is for 404:
raise Http404 From my previous comment :
You can return a HttpResponseBadRequest
Also, you can create an Exception subclass like Http404 to have your own Http400 exception.
BaseHandler looks for the Http404 type specifically and always uses status code 404, I can't see a clean way of wiring your own exception and status code in thereYou can do the following:
from django.core.exceptions import SuspiciousOperation raise SuspiciousOperation("Invalid request; see documentation for correct paramaters") SuspiciousOperation is mapped to a 400 response around line 207 of https://github.com/django/django/blob/master/django/core/handlers/base.py
Since Django 3.2, you can also raise a BadRequest exception:
from django.core.exceptions import BadRequest raise BadRequest('Invalid request.') This may be better in some cases than SuspiciousOperation mentioned in another answer, as it does not log a security event; see the doc on exceptions.
If you're using the Django Rest Framework, you have two ways of raising a 400 response in a view:
from rest_framework.exceptions import ValidationError, ParseError raise ValidationError # or raise ParseError