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

Атрибут body

Атрибут body класса HttpRequest возвращает тело запроса в виде байтовой строки (bytes). Он предназначен для доступа к сырым данным, переданным в запросе, например, при обработке JSON-данных, загрузке файлов или работе с веб-хуками. В отличие от атрибутов HttpRequest/attribute/GET/">GET и HttpRequest/attribute/POST/">POST, которые предоставляют обработанные данные форм, body позволяет получить исходные данные без какой-либо интерпретации.

Атрибут доступен только для чтения. Он может быть пустым (b''), если тело запроса отсутствует. Для обработки данных из body часто требуется дополнительное декодирование, например, в формат UTF-8 при работе с текстовыми данными.

Синтаксис

request.body

Пример

Рассмотрим базовый пример получения сырых данных из тела запроса в представлении:

from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def raw_data_view(request): raw_body = request.body return HttpResponse(f"Raw body: {raw_body}")

Пример

Часто бывает необходимо декодировать байтовые данные в строку для дальнейшей обработки. Например, при получении JSON:

import json from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def json_view(request): try: data = json.loads(request.body.decode('utf-8')) return JsonResponse({'status': 'ok', 'data': data}) except json.JSONDecodeError: return JsonResponse({'status': 'error'}, status=400)

Результат выполнения при корректном JSON-запросе:

{"status": "ok", "data": {"key": "value"}}

Пример

Атрибут body также полезен при работе с веб-хуками, когда данные приходят в формате XML или других нестандартных форматах:

from django.http import HttpResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def webhook_view(request): xml_data = request.body # Здесь можно парсить XML return HttpResponse(f"Received XML: {xml_data[:100]}...")

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

"Received XML: b'<?xml version=\"1.0\" ...'..."

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

  • атрибут GET,
    который предоставляет доступ к данным GET-запроса
  • атрибут POST,
    который предоставляет доступ к данным POST-запроса
  • атрибут FILES,
    который содержит загруженные файлы в запросе
  • класс HttpRequest,
    основной класс для работы с запросами в Django
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить