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

Класс JsonResponse

Класс JsonResponse наследуется от HttpResponse и предназначен для создания JSON-ответов в Django. Он принимает на вход данные, которые автоматически сериализуются в JSON с помощью стандартного модуля json. В качестве первого аргумента передается словарь или список, который будет преобразован в JSON-строку. Класс автоматически устанавливает заголовок Content-Type в значение 'application/json'.

Основные параметры конструктора:

  • data - данные для сериализации (словарь, список или любая структура, которую можно преобразовать в JSON);
  • encoder - пользовательский класс JSON-кодировщика, наследуемый от json.JSONEncoder;
  • safe - логический флаг, определяющий, разрешена ли передача объектов, не являющихся словарями;
  • json_dumps_params - словарь дополнительных параметров для функции json.dumps.

Синтаксис

from django.http import JsonResponse return JsonResponse(data, safe=True, json_dumps_params=None, encoder=None)

Пример

Создадим простой JSON-ответ с данными о пользователе:

from django.http import JsonResponse def user_profile(request): data = { "username": "john_doe", "email": "john@example.com", "age": 25, "is_active": True } return JsonResponse(data)

Результат выполнения кода:

{"username": "john_doe", "email": "john@example.com", "age": 25, "is_active": true}

Пример

Отправим JSON-ответ со статусом операции и списком данных:

from django.http import JsonResponse from myapp.models import Article def article_list(request): articles = Article.objects.all().values("id", "title", "status") data = { "status": "success", "count": articles.count(), "results": list(articles) } return JsonResponse(data)

Результат выполнения кода:

{"status": "success", "count": 2, "results": [{"id": 1, "title": "article 1", "status": "published"}, {"id": 2, "title": "article 2", "status": "draft"}]}

Пример

Используем параметр json_dumps_params для форматирования вывода:

from django.http import JsonResponse def pretty_json_response(request): data = { "name": "Django", "version": "5.0", "features": ["ORM", "Templates", "Admin"] } return JsonResponse(data, json_dumps_params={"indent": 4})

Результат выполнения кода:

{ "name": "Django", "version": "5.0", "features": ["ORM", "Templates", "Admin"] }

Пример

Отправим список объектов (не словарь) с параметром safe=False:

from django.http import JsonResponse def article_titles(request): titles = ["article 1", "article 2", "article 3"] return JsonResponse(titles, safe=False)

Результат выполнения кода:

["article 1", "article 2", "article 3"]

Пример

Используем параметр encoder для поддержки специфических типов данных:

from django.http import JsonResponse from datetime import datetime import json class CustomJSONEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime): return obj.isoformat() return super().default(obj) def article_with_date(request): data = { "title": "article", "created_at": datetime.now() } return JsonResponse(data, encoder=CustomJSONEncoder)

Результат выполнения кода:

{"title": "article", "created_at": "2026-09-07T15:30:45.123456"}

Смотрите также

  • класс HttpResponse,
    базовый класс для всех HTTP-ответов в Django
  • класс FileResponse,
    который используется для отправки файлов в ответе
  • класс StreamingHttpResponse,
    который используется для потоковой передачи данных
  • класс HttpResponseRedirect,
    который используется для перенаправлений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить