Метод get_full_path
Метод get_full_path применяется к объекту HttpRequest и возвращает строку,
содержащую путь запроса с добавленной строкой запроса (если она присутствует).
В отличие от атрибута path, который возвращает только путь без параметров,
get_full_path включает все параметры GET запроса. Метод часто используется
для перенаправления пользователя на ту же страницу с сохранением всех GET параметров,
а также для построения абсолютных URL с помощью метода HttpRequest/method/build_absolute_uri/">build_absolute_uri.
Синтаксис
request.get_full_path()
Метод не принимает аргументов и возвращает строку.
Пример . Использование в представлении
Рассмотрим пример, в котором представление возвращает текущий полный путь запроса:
from django.http import HttpResponse
def my_view(request):
current_path = request.get_full_path()
return HttpResponse(f"Current full path: {current_path}")
Результат выполнения кода:
"Current full path: /articles/?category=tech&page=2"
Пример . Использование для редиректа
Метод get_full_path часто применяется в связке с редиректом для возврата пользователя
на ту же страницу с сохранением всех параметров:
from django.shortcuts import redirect
def process_form(request):
if request.method == 'POST':
# Обработка данных формы
return redirect(request.get_full_path())
return render(request, 'form.html')
Результат выполнения кода:
"Redirecting to: /articles/?category=tech&page=2"
Пример . Сравнение с атрибутом path
Важно понимать разницу между get_full_path и атрибутом path.
Атрибут path возвращает только путь без GET параметров:
from django.http import HttpResponse
def compare_paths(request):
full_path = request.get_full_path()
path_only = request.path
return HttpResponse(f"Full path: {full_path}\nPath only: {path_only}")
Результат выполнения кода:
"Full path: /articles/?category=tech&page=2\nPath only: /articles/"
Пример . Использование для формирования абсолютных ссылок
Метод get_full_path часто используется с методом build_absolute_uri для
получения полного URL с протоколом и доменом:
from django.http import HttpResponse
def absolute_url_example(request):
full_path = request.get_full_path()
absolute_uri = request.build_absolute_uri(full_path)
return HttpResponse(f"Absolute URI: {absolute_uri}")
Результат выполнения кода:
"Absolute URI: https://example.com/articles/?category=tech&page=2"
Смотрите также
-
метод
build_absolute_uri,
который строит полный абсолютный URL на основе переданного пути -
атрибут
path,
который возвращает только путь запроса без строки запроса -
атрибут
GET,
который содержит QueryDict с параметрами GET запроса -
функция
redirect,
которая используется для перенаправления на заданный URL