Ответ
В Django существует несколько способов вернуть JSON-ответ, но основной и рекомендуемый — использование класса JsonResponse.
1. Использование JsonResponse (рекомендуемый способ)
Класс JsonResponse из модуля django.http автоматически сериализует Python-словарь в JSON и устанавливает правильный заголовок Content-Type: application/json.
from django.http import JsonResponse
def api_data_view(request):
data = {
'user': 'admin',
'status': 'ok',
'items': [1, 2, 3]
}
return JsonResponse(data)
2. Ручная сериализация с HttpResponse
Этот способ более низкоуровневый. Вам нужно вручную импортировать модуль json, сериализовать данные и указать content_type.
import json
from django.http import HttpResponse
def manual_api_view(request):
data = {'message': 'This is a manual response'}
json_data = json.dumps(data)
return HttpResponse(json_data, content_type='application/json')
3. Django REST Framework (DRF)
Для создания полноценных REST API, где работа с JSON является основной задачей, рекомендуется использовать Django REST Framework. Он предоставляет мощные инструменты для сериализации сложных данных (моделей, queryset'ов) и обработки API-запросов.