Атрибут META

Атрибут META класса HttpRequest представляет собой словарь (dict), содержащий все заголовки HTTP-запроса и метаданные серверного окружения. Это стандартный словарь Python, доступный только для чтения. Ключи в нем обычно записываются в верхнем регистре, а дефисы в именах заголовков заменяются на символы подчеркивания. Например, заголовок HTTP_USER_AGENT хранит информацию о браузере клиента.

Ключи, начинающиеся с HTTP_, соответствуют стандартным HTTP-заголовкам, переданным в запросе. Другие ключи, такие как REMOTE_ADDR, SERVER_NAME, SERVER_PORT и подобные, предоставляют информацию о серверном окружении и настройках сервера. Атрибут часто используется для проверки IP-адреса клиента, определения типа браузера или получения данных о реферере.

Синтаксис

pythonrequest.META.get('HTTP_HOST')

Пример

Давайте получим IP-адрес клиента, используя ключ REMOTE_ADDR:

pythonfrom django.http import HttpResponse

def get_client_ip(request):
  client_ip = request.META.get('REMOTE_ADDR')
  return HttpResponse(f"Client IP: {client_ip}")

Результат выполнения кода при обращении к представлению:

python"Client IP: 192.168.1.10"

Пример

Определим тип браузера пользователя через заголовок HTTP_USER_AGENT:

pythonfrom django.http import HttpResponse

def get_browser_info(request):
  user_agent = request.META.get('HTTP_USER_AGENT', 'Unknown')
  return HttpResponse(f"User-Agent: {user_agent}")

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

python"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

Пример

Проверим, был ли сделан запрос через AJAX, по заголовку HTTP_X_REQUESTED_WITH:

pythonfrom django.http import JsonResponse

def check_ajax(request):
  is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
  return JsonResponse({'ajax': is_ajax})

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

python"{'ajax': True}"

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

  • атрибут GET,
    который содержит все GET-параметры запроса
  • атрибут headers,
    который предоставляет доступ к HTTP-заголовкам через объект, подобный словарю с регистронезависимыми ключами
  • атрибут method,
    который возвращает HTTP-метод запроса (GET, POST и т.д.)
  • атрибут path,
    который возвращает путь запроса без учета строки запроса