Атрибут headers
Атрибут headers класса HttpRequest предоставляет доступ к заголовкам HTTP-запроса в виде объекта, подобного словарю. Все заголовки автоматически нормализуются и преобразуются к формату с заглавными буквами и дефисами. Атрибут доступен только для чтения и содержит все заголовки, отправленные клиентом, включая стандартные, такие как User-Agent, Content-Type, и пользовательские.
В отличие от словаря HttpRequest/attribute/META/">META, который содержит заголовки с префиксом HTTP_ и другие метаданные сервера, атрибут headers предоставляет прямой и удобный доступ только к заголовкам запроса.
Синтаксис
request.headers.get('Header-Name')
request.headers['Header-Name']
request.headers.getlist('Header-Name')
request.headers.keys()
request.headers.items()
Пример
Получим содержимое заголовка User-Agent из запроса:
from django.http import HttpResponse
def my_view(request):
user_agent = request.headers.get('User-Agent')
return HttpResponse(f'Your user-agent: {user_agent}')
Результат выполнения при запросе с браузера Chrome:
"Your user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Пример
Переберем все заголовки запроса и выведем их названия и значения:
from django.http import HttpResponse
def my_view(request):
res = ""
for key, value in request.headers.items():
res += f"{key}: {value}\n"
return HttpResponse(res)
Результат выполнения кода:
"Host: example.com"
"User-Agent: Mozilla/5.0"
"Accept: text/html"
"Accept-Language: ru-RU"
Пример
Получим значение пользовательского заголовка X-Custom-Header:
from 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}')
Результат выполнения кода:
"Custom header: My value"