Конвертер path

Конвертер path применяется в маршрутах для извлечения частей URL и преобразования их в переменные с типами данных. В Django по умолчанию доступны несколько встроенных конвертеров: str, int, slug, uuid и path. Конвертер path позволяет захватывать любой путь, включая слеши, что делает его полезным для обработки глубоких URL.

Синтаксис

pythonpath('route/<path:variable>/', view_function, name='url_name')

Пример

Давайте создадим маршрут для обработки глубоких путей с использованием конвертера path:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('docs/<path:doc_path>/', views.document_view, name='document'),
]

Теперь напишем view-функцию, которая будет принимать переменную doc_path:

pythonfrom django.http import HttpResponse

def document_view(request, doc_path):
  return HttpResponse(f"Path: {doc_path}")

Результат выполнения при обращении к URL '/docs/guides/install/setup/':

python"Path: guides/install/setup/"

Пример

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

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('files/<path:file_path>/', views.file_view, name='file'),
]

View-функция для обработки пути к файлу:

pythonfrom django.http import HttpResponse

def file_view(request, file_path):
  return HttpResponse(f"File path: {file_path}")

Результат выполнения при обращении к URL '/files/static/images/logo.png':

python"File path: static/images/logo.png"

Пример

Конвертер path можно комбинировать с другими конвертерами для создания сложных маршрутов:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('user/<int:user_id>/docs/<path:doc_path>/', views.user_document_view, name='user_doc'),
]

View-функция для обработки такого маршрута:

pythonfrom django.http import HttpResponse

def user_document_view(request, user_id, doc_path):
  return HttpResponse(f"User ID: {user_id}, Document path: {doc_path}")

Результат выполнения при обращении к URL '/user/42/docs/guides/install/setup/':

python"User ID: 42, Document path: guides/install/setup/"

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

  • конвертер int,
    который преобразует параметр в целое число
  • конвертер str,
    который преобразует параметр в строку без слешей
  • функция path,
    которая определяет маршрут с конвертерами
  • функция re_path,
    которая определяет маршрут с помощью регулярных выражений