РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
354 of 818 menu

Метод build_absolute_uri

Метод build_absolute_uri применяется к объекту запроса HttpRequest и возвращает абсолютный URL в виде строки. Он принимает один необязательный параметр - относительный путь или полный URL, и на основе текущего запроса строит абсолютный URL с протоколом, доменом и портом. Метод полезен для генерации ссылок, которые будут отправлены в письмах, API-ответах или использованы в шаблонах, когда требуется полный URL, а не относительный путь.

Параметр метода может быть строкой, содержащей относительный путь (например, '/articles/') или полный URL (например, 'https://example.com/page/'). Если параметр не указан, метод возвращает абсолютный URL текущего запроса. Метод автоматически учитывает настройки SECURE_PROXY_SSL_HEADER и USE_X_FORWARDED_HOST для корректного определения протокола и хоста за прокси-серверами.

Синтаксис

request.build_absolute_uri(location=None)

Пример

Давайте получим абсолютный URL текущей страницы, на которую был отправлен запрос:

from django.http import HttpRequest request = HttpRequest() request.path = '/articles/2025/' request.META['HTTP_HOST'] = 'example.com' request.META['SERVER_PORT'] = '80' absolute_url = request.build_absolute_uri() print(absolute_url)

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

"http://example.com/articles/2025/"

Пример

Давайте создадим абсолютный URL для указанного относительного пути:

from django.http import HttpRequest request = HttpRequest() request.path = '/profile/' request.META['HTTP_HOST'] = 'example.com' request.META['SERVER_PORT'] = '443' absolute_url = request.build_absolute_uri('/articles/?page=2') print(absolute_url)

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

"https://example.com/articles/?page=2"

Пример

Рассмотрим использование метода во view-функции для создания ссылки на страницу подтверждения регистрации:

from django.shortcuts import render from django.http import HttpRequest def confirm_email(request, token): confirmation_link = request.build_absolute_uri(f'/confirm/{token}/') print(confirmation_link) return render(request, 'confirm.html', {'link': confirmation_link})

Результат выполнения кода при запросе на 'https://mysite.com/signup/':

"https://mysite.com/confirm/abc123def/"

Пример

Метод также позволяет преобразовывать переданный полный URL, добавляя или заменяя параметры:

from django.http import HttpRequest request = HttpRequest() request.META['HTTP_HOST'] = 'example.com' request.META['SERVER_PORT'] = '8080' full_url = request.build_absolute_uri('https://another-site.com/page/?id=5') print(full_url)

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

"https://another-site.com/page/?id=5"

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

  • метод get_full_path,
    который возвращает путь и строку запроса текущего запроса
  • атрибут path,
    который содержит путь запроса без параметров
  • атрибут headers,
    который содержит заголовки HTTP-запроса
  • метод is_secure,
    который определяет, был ли запрос отправлен по HTTPS
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить