Получение данных запроса. HttpRequest

Последнее обновление: 15.08.2022

Функции-представления в качестве обязательного параметра получают объект HttpRequest, который хранит информацию о запросе. HttpRequest определяет ряд атрибутов, которые хранят информацию о запросе. Выделим следующие из них:

  • scheme: схема запроса (http или https)

  • body: представляет тело запроса в виде строки байтов

  • path: представляет путь запроса

  • method: метод запроса (GET, POST, PUT и т.д.)

  • encoding: кодировка

  • content_type: тип содержимого запроса (значение заголовка CONTENT_TYPE)

  • GET: объект в виде словаря, который содержит параметры запроса GET

  • POST: объект в виде словаря, который содержит параметры запроса POST

  • COOKIES: отправленные клиентом куки

  • FILES: отправленные клиентом файлы

  • META: хранит все доступные заголовки http в виде словаря. Набор заголовков зависит от клиента и сервера, некоторые из них:

    • CONTENT_LENGTH: длина содержимого.
    • CONTENT_TYPE: MIME-тип запроса.
    • HTTP_ACCEPT: типы ответа, которые принимает клиент.
    • HTTP_ACCEPT_ENCODING: кодировка, в которой клиент принимает ответ.
    • HTTP_ACCEPT_LANGUAGE: язык ответа, который принимает клиент.
    • HTTP_HOST: хост сервера.
    • HTTP_REFERER: страница, с которой клиент отправил запрос (при ее наличии).
    • HTTP_USER_AGENT: юзер-агент или информация о браузере клиента.
    • QUERY_STRING: строка запроса.
    • REMOTE_ADDR: IP-адрес клиента.
    • REMOTE_HOST: имя хоста клиента.
    • REMOTE_USER: аутентификационные данные клиента (при наличии)
    • REQUEST_METHOD: тип запроса (GET, POST).
    • SERVER_NAME: имя хоста сервера.
    • SERVER_PORT: порт сервера.
  • headers: заголовки запроса в виде словаря

Также HttpRequest определяет ряд методов. Отметим следующие из них:

  • get_full_path(): возвращает полный путь запроса, включая строку запроса

  • get_host(): возвращает хост клиента, для этого используется значения заголовков HTTP_X_FORWARDED_HOST (если включена опция USE_X_FORWARDED_HOST) и HTTP_HOST

  • get_port(): возвращает номер порта

Например, получим некоторую информацию о запросе. Для этого в файле views.py:

from django.http import HttpResponse

def index(request):
    host = request.META["HTTP_HOST"] # получаем адрес сервера
    user_agent = request.META["HTTP_USER_AGENT"]    # получаем данные бразера
    path = request.path     # получаем запрошенный путь
    
    return HttpResponse(f"""
        <p>Host: {host}</p>
        <p>Path: {path}</p>
        <p>User-agent: {user_agent}</p>
    """)

В данном случае получаем два заголовка "HTTP_HOST" и "HTTP_USER_AGENT" и запрошенный путь.

В файле urls.py зарегистрируем данную функцию:

from django.urls import path
from hello import views

urlpatterns = [
    path("index", views.index),
]

Результат работы:

HttpRequest и получение данных запроса в веб-приложении на Django и python
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850