Функция path
Функция path применяется для создания маршрутов в файле urls.py приложения. Она принимает строку маршрута, имя представления и опциональные параметры, такие как имя маршрута и дополнительные аргументы. Функция позволяет использовать конвертеры типов для извлечения параметров из URL.
Синтаксис
path(route, view, kwargs=None, name=None)
Параметры
-
route- строка, определяющая шаблон URL. Может содержать конвертеры типов для извлечения параметров. -
view- представление, которое будет вызвано при совпадении с маршрутом. Это может быть функция-представление или класс. -
kwargs(необязательный) - словарь с дополнительными аргументами, которые будут переданы в представление. -
name(необязательный) - имя маршрута, которое используется для обращения к нему в шаблонах и представлениях.
Пример
Рассмотрим простой маршрут для главной страницы:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='home'),
]
Результат выполнения кода:
"Главная страница загружена"
Пример
Создадим маршрут с параметром, используя конвертер int:
from django.urls import path
from . import views
urlpatterns = [
path('articles/<int:article_id>/', views.article_detail, name='article_detail'),
]
В представлении можно получить параметр из URL:
from 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})
Пример
Использование нескольких конвертеров в одном маршруте:
from django.urls import path
from . import views
urlpatterns = [
path('posts/<slug:post_slug>/<int:post_id>/', views.post_detail, name='post_detail'),
]
Представление принимает оба параметра:
from 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:
from django.urls import path
from . import views
urlpatterns = [
path('profile/', views.profile, kwargs={'user_id': 1}, name='profile'),
]
Представление получает дополнительный аргумент:
from 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:
from django.urls import path, include
from . import views
urlpatterns = [
path('blog/', include('blog.urls')),
path('users/', include('users.urls')),
]
В файле blog/urls.py:
from 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 по имени маршрута