Ответ
Для возврата ответа с HTTP-статусом 400 Bad Request в Django, что является стандартом для ошибок на стороне клиента (например, невалидные данные), используется класс JsonResponse.
Это предпочтительный способ для REST API, так как позволяет вернуть структурированное сообщение об ошибке в формате JSON.
1. Использование JsonResponse (рекомендуется для API)
Вы можете передать словарь с описанием ошибки и указать status=400.
from django.http import JsonResponse
def my_api_view(request):
# Пример: проверяем наличие обязательного параметра 'email'
email = request.POST.get('email')
if not email:
# Возвращаем JSON с ошибкой и статусом 400
return JsonResponse(
{'error': 'Параметр "email" является обязательным.'},
status=400
)
# ... дальнейшая логика обработки корректных данных
return JsonResponse({'status': 'ok'})
2. Использование валидации Django Forms
При работе с формами Django предоставляет встроенный механизм валидации. Если форма невалидна, её ошибки можно легко сериализовать в JSON.
from django.http import JsonResponse
from .forms import MyForm
def process_form_view(request):
form = MyForm(request.POST)
if form.is_valid():
# Обработка данных
return JsonResponse({'success': True})
else:
# form.errors содержит словарь с ошибками валидации
return JsonResponse(form.errors, status=400)
3. Использование HttpResponseBadRequest
Это более простой вариант, который возвращает ответ с телом в виде простого текста. Подходит для случаев, когда не требуется JSON-ответ.
from django.http import HttpResponseBadRequest
def simple_view(request):
if not request.POST.get('data'):
return HttpResponseBadRequest("Ошибка: данные не предоставлены.")
# ...