Атрибут META
Атрибут META класса HttpRequest представляет собой словарь (dict), содержащий все заголовки HTTP-запроса и метаданные серверного окружения. Это стандартный словарь Python, доступный только для чтения. Ключи в нем обычно записываются в верхнем регистре, а дефисы в именах заголовков заменяются на символы подчеркивания. Например, заголовок HTTP_USER_AGENT хранит информацию о браузере клиента.
Ключи, начинающиеся с HTTP_, соответствуют стандартным HTTP-заголовкам, переданным в запросе. Другие ключи, такие как REMOTE_ADDR, SERVER_NAME, SERVER_PORT и подобные, предоставляют информацию о серверном окружении и настройках сервера. Атрибут часто используется для проверки IP-адреса клиента, определения типа браузера или получения данных о реферере.
Синтаксис
request.META.get('HTTP_HOST')
Пример
Давайте получим IP-адрес клиента, используя ключ REMOTE_ADDR:
from django.http import HttpResponse
def get_client_ip(request):
client_ip = request.META.get('REMOTE_ADDR')
return HttpResponse(f"Client IP: {client_ip}")
Результат выполнения кода при обращении к представлению:
"Client IP: 192.168.1.10"
Пример
Определим тип браузера пользователя через заголовок HTTP_USER_AGENT:
from 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}")
Результат выполнения кода:
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
Пример
Проверим, был ли сделан запрос через AJAX, по заголовку HTTP_X_REQUESTED_WITH:
from django.http import JsonResponse
def check_ajax(request):
is_ajax = request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
return JsonResponse({'ajax': is_ajax})
Результат выполнения кода для AJAX-запроса:
"{'ajax': True}"
Смотрите также
-
атрибут
GET,
который содержит все GET-параметры запроса -
атрибут
headers,
который предоставляет доступ к HTTP-заголовкам через объект, подобный словарю с регистронезависимыми ключами -
атрибут
method,
который возвращает HTTP-метод запроса (GET, POST и т.д.) -
атрибут
path,
который возвращает путь запроса без учета строки запроса