РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
366 of 818 menu

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
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить