Атрибут path
Атрибут path класса HttpRequest возвращает строку с путем запроса. Этот путь включает в себя только путь URL, исключая домен, протокол и строку запроса с GET-параметрами. Атрибут доступен только для чтения.
Синтаксис
request.path
Пример
Рассмотрим простой пример использования атрибута path в представлении для получения текущего пути запроса:
from django.http import HttpResponse
def my_view(request):
path = request.path
return HttpResponse(f"Current path: {path}")
При обращении к адресу /myapp/article/123/ результат будет следующим:
"Current path: /myapp/article/123/"
Пример
Атрибут path возвращает путь без GET-параметров. Для получения полного пути вместе с параметрами используйте метод get_full_path. Сравним их работу:
from django.http import HttpResponse
def compare_view(request):
path = request.path
full_path = request.get_full_path()
return HttpResponse(f"path: {path}\nfull_path: {full_path}")
При обращении к адресу /myapp/article/123/?page=2&sort=asc результат будет следующим:
"path: /myapp/article/123/"
"full_path: /myapp/article/123/?page=2&sort=asc"
Пример
Атрибут path часто используется для перенаправлений на основе текущего пути или для логирования запросов. Рассмотрим пример с условным перенаправлением:
from django.http import HttpResponseRedirect
from django.urls import reverse
def redirect_view(request):
if request.path == "/old-url/":
return HttpResponseRedirect(reverse("new_url"))
return HttpResponseRedirect("/")
При обращении к адресу /old-url/ произойдет перенаправление на новый URL. Результат выполнения для других путей:
"Redirecting to: /"
Смотрите также
-
атрибут
GET,
который содержит все GET-параметры запроса -
метод
get_full_path,
который возвращает путь вместе с GET-параметрами -
атрибут
method,
который возвращает HTTP-метод запроса -
атрибут
META,
который содержит метаданные запроса