HttpResponseBadRequest
Класс HttpResponseBadRequest применяется для возврата
HTTP-ответа с кодом состояния 400, который указывает на то,
что сервер не может обработать запрос из-за синтаксической
ошибки со стороны клиента. Этот класс наследуется от
HttpResponse и автоматически устанавливает
статус-код 400. В качестве аргументов принимает
содержимое ответа (обычно строку с описанием ошибки)
и дополнительные заголовки.
Синтаксис
from django.http import HttpResponseBadRequest
response = HttpResponseBadRequest(content='Error message', headers=None)
Пример . Использование во view
Давайте создадим представление, которое проверяет наличие
параметра 'id' в GET-запросе и возвращает
ошибку 400, если параметр отсутствует:
from django.http import HttpResponseBadRequest, HttpResponse
from django.views import View
class ArticleDetailView(View):
def get(self, request):
article_id = request.GET.get('id')
if article_id is None:
return HttpResponseBadRequest('Missing required parameter: id')
return HttpResponse(f'Article with id: {article_id}')
Результат выполнения при запросе без параметра 'id':
"Missing required parameter: id"
Пример . С дополнительными заголовками
Рассмотрим пример, где в ответ добавляется пользовательский заголовок с подсказкой о формате данных:
from django.http import HttpResponseBadRequest
from django.views import View
class CreateArticleView(View):
def post(self, request):
title = request.POST.get('title')
content = request.POST.get('content')
if not title or not content:
headers = {'X-Error-Hint': 'Both title and content are required'}
return HttpResponseBadRequest(
'Invalid data: missing required fields',
headers=headers
)
return HttpResponse('Article created successfully')
Пример . С JSON ответом
В современных API часто используют JSON формат для ответа с ошибкой. Рассмотрим такой пример:
import json
from django.http import HttpResponseBadRequest
from django.views import View
class ApiView(View):
def post(self, request):
try:
data = json.loads(request.body)
if 'title' not in data:
error_data = {
'error': 'Bad Request',
'message': 'Title field is required',
'code': 400
}
return HttpResponseBadRequest(
json.dumps(error_data),
headers={'Content-Type': 'application/json'}
)
except json.JSONDecodeError:
error_data = {
'error': 'Bad Request',
'message': 'Invalid JSON format',
'code': 400
}
return HttpResponseBadRequest(
json.dumps(error_data),
headers={'Content-Type': 'application/json'}
)
return HttpResponse('Data processed successfully')
Результат выполнения кода при отсутствии поля 'title':
"{"error": "Bad Request", "message": "Title field is required", "code": 400}"
Смотрите также
-
класс
HttpResponseNotFound,
который возвращает код состояния 404 Not Found -
класс
HttpResponseForbidden,
который возвращает код состояния 403 Forbidden -
класс
HttpResponseNotAllowed,
который возвращает код состояния 405 Method Not Allowed -
класс
HttpResponseServerError,
который возвращает код состояния 500 Internal Server Error