Атрибут headers

Атрибут headers класса HttpRequest предоставляет доступ к заголовкам HTTP-запроса в виде объекта, подобного словарю. Все заголовки автоматически нормализуются и преобразуются к формату с заглавными буквами и дефисами. Атрибут доступен только для чтения и содержит все заголовки, отправленные клиентом, включая стандартные, такие как User-Agent, Content-Type, и пользовательские.

В отличие от словаря HttpRequest/attribute/META/">META, который содержит заголовки с префиксом HTTP_ и другие метаданные сервера, атрибут headers предоставляет прямой и удобный доступ только к заголовкам запроса.

Синтаксис

pythonrequest.headers.get('Header-Name')
request.headers['Header-Name']
request.headers.getlist('Header-Name')
request.headers.keys()
request.headers.items()

Пример

Получим содержимое заголовка User-Agent из запроса:

pythonfrom django.http import HttpResponse

def my_view(request):
  user_agent = request.headers.get('User-Agent')
  return HttpResponse(f'Your user-agent: {user_agent}')

Результат выполнения при запросе с браузера Chrome:

python"Your user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

Пример

Переберем все заголовки запроса и выведем их названия и значения:

pythonfrom django.http import HttpResponse

def my_view(request):
  res = ""
  for key, value in request.headers.items():
    res += f"{key}: {value}\n"
  return HttpResponse(res)

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

python"Host: example.com"
"User-Agent: Mozilla/5.0"
"Accept: text/html"
"Accept-Language: ru-RU"

Пример

Получим значение пользовательского заголовка X-Custom-Header:

pythonfrom django.http import HttpResponse

def my_view(request):
  custom_header = request.headers.get('X-Custom-Header', 'Header not found')
  return HttpResponse(f'Custom header: {custom_header}')

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

python"Custom header: My value"

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

  • атрибут META,
    который предоставляет доступ к метаданным сервера и заголовкам запроса с префиксом HTTP_
  • атрибут GET,
    который содержит параметры строки запроса
  • атрибут POST,
    который содержит данные, переданные методом POST
  • атрибут COOKIES,
    который содержит куки, отправленные клиентом