Атрибут path

Атрибут path класса HttpRequest возвращает строку с путем запроса. Этот путь включает в себя только путь URL, исключая домен, протокол и строку запроса с GET-параметрами. Атрибут доступен только для чтения.

Синтаксис

pythonrequest.path

Пример

Рассмотрим простой пример использования атрибута path в представлении для получения текущего пути запроса:

pythonfrom django.http import HttpResponse

def my_view(request):
  path = request.path
  return HttpResponse(f"Current path: {path}")

При обращении к адресу /myapp/article/123/ результат будет следующим:

python"Current path: /myapp/article/123/"

Пример

Атрибут path возвращает путь без GET-параметров. Для получения полного пути вместе с параметрами используйте метод get_full_path. Сравним их работу:

pythonfrom 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 результат будет следующим:

python"path: /myapp/article/123/"
"full_path: /myapp/article/123/?page=2&sort=asc"

Пример

Атрибут path часто используется для перенаправлений на основе текущего пути или для логирования запросов. Рассмотрим пример с условным перенаправлением:

pythonfrom 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. Результат выполнения для других путей:

python"Redirecting to: /"

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

  • атрибут GET,
    который содержит все GET-параметры запроса
  • метод get_full_path,
    который возвращает путь вместе с GET-параметрами
  • атрибут method,
    который возвращает HTTP-метод запроса
  • атрибут META,
    который содержит метаданные запроса