Функция path

Функция path применяется для создания маршрутов в файле urls.py приложения. Она принимает строку маршрута, имя представления и опциональные параметры, такие как имя маршрута и дополнительные аргументы. Функция позволяет использовать конвертеры типов для извлечения параметров из URL.

Синтаксис

pythonpath(route, view, kwargs=None, name=None)

Параметры

Пример

Рассмотрим простой маршрут для главной страницы:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='home'),
]

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

python"Главная страница загружена"

Пример

Создадим маршрут с параметром, используя конвертер int:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('articles/<int:article_id>/', views.article_detail, name='article_detail'),
]

В представлении можно получить параметр из URL:

pythonfrom django.shortcuts import render
from .models import Article

def article_detail(request, article_id):
  article = Article.objects.get(id=article_id)
  return render(request, 'article_detail.html', {'article': article})

Пример

Использование нескольких конвертеров в одном маршруте:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('posts/<slug:post_slug>/<int:post_id>/', views.post_detail, name='post_detail'),
]

Представление принимает оба параметра:

pythonfrom django.shortcuts import render
from .models import Post

def post_detail(request, post_slug, post_id):
  post = Post.objects.get(id=post_id, slug=post_slug)
  return render(request, 'post_detail.html', {'post': post})

Пример

Передача дополнительных аргументов через kwargs:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('profile/', views.profile, kwargs={'user_id': 1}, name='profile'),
]

Представление получает дополнительный аргумент:

pythonfrom django.shortcuts import render
from .models import User

def profile(request, user_id):
  user = User.objects.get(id=user_id)
  return render(request, 'profile.html', {'user': user})

Пример

Создание вложенных маршрутов с помощью include:

pythonfrom django.urls import path, include
from . import views

urlpatterns = [
  path('blog/', include('blog.urls')),
  path('users/', include('users.urls')),
]

В файле blog/urls.py:

pythonfrom django.urls import path
from . import views

urlpatterns = [
  path('', views.blog_index, name='blog_index'),
  path('post/<int:post_id>/', views.blog_post, name='blog_post'),
]

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

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