РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
272 of 818 menu

Функция reverse

Функция reverse применяется для получения полного пути URL по имени маршрута, указанного в файле urls.py. Она принимает имя маршрута и необязательные аргументы, такие как args или kwargs, соответствующие параметрам URL. Функция возвращает строку с сгенерированным URL. Это позволяет избегать жесткого кодирования URL-адресов в шаблонах и представлениях, делая код более гибким и удобным для поддержки.

Синтаксис

from django.urls import reverse reverse(viewname, args=None, kwargs=None, urlconf=None)

Параметр viewname - это строка с именем маршрута, определенного в файле urls.py. Параметры args и kwargs используются для подстановки значений в динамические части URL. Параметр urlconf позволяет указать альтернативный конфигурационный файл URL-адресов для поиска маршрута.

Пример . С именованным маршрутом

Давайте определим простой маршрут с именем 'blog_article' в файле urls.py и сгенерируем его URL с помощью reverse:

# urls.py from django.urls import path from . import views urlpatterns = [ path('blog/<int:year>/<int:month>/<slug:slug>/', views.article_detail, name='blog_article'), ]
from django.urls import reverse url = reverse('blog_article', kwargs={'year': 2025, 'month': 9, 'slug': 'django-tips'}) print(url)

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

"/blog/2025/9/django-tips/"

Пример . С маршрутом без параметров

Функцию reverse можно использовать даже для URL-адресов, не содержащих динамических параметров. Рассмотрим пример с главной страницей:

# urls.py from django.urls import path from . import views urlpatterns = [ path('', views.index, name='home'), ]
from django.urls import reverse url = reverse('home') print(url)

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

"/"

Пример . С позиционными аргументами

Вместо именованных параметров можно передавать позиционные аргументы с помощью параметра args. Это удобно, когда URL содержит простые последовательные параметры:

# urls.py from django.urls import path from . import views urlpatterns = [ path('article/<int:article_id>/', views.article_view, name='article_by_id'), ]
from django.urls import reverse url = reverse('article_by_id', args=[42]) print(url)

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

"/article/42/"

Пример . Использование в представлении

Функция reverse часто используется в представлениях для перенаправления пользователя после выполнения какого-либо действия. Рассмотрим это на примере создания новой записи:

from django.http import HttpResponseRedirect from django.urls import reverse from .models import Article def create_article(request): # Сохранение статьи... article = Article.objects.create(title="New Article", content="Content") url = reverse('article_detail', kwargs={'pk': article.pk}) return HttpResponseRedirect(url)

В этом примере после создания статьи мы генерируем URL для просмотра детальной страницы и перенаправляем пользователя на неё. Результат выполнения кода:

"/article/1/"

Пример . С пространством имен

Если маршрут определен внутри пространства имен приложения, например 'blog:detail', нужно указать полное имя с префиксом. Рассмотрим такой пример:

# urls.py from django.urls import path, include urlpatterns = [ path('blog/', include('blog.urls', namespace='blog')), ] # blog/urls.py from django.urls import path from . import views app_name = 'blog' urlpatterns = [ path('post/<int:post_id>/', views.post_detail, name='detail'), ]
from django.urls import reverse url = reverse('blog:detail', kwargs={'post_id': 15}) print(url)

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

"/blog/post/15/"

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

  • функция re_path,
    позволяющая определять маршруты с помощью регулярных выражений
  • функция include,
    используемая для подключения файлов с маршрутами приложений
  • функция reverse_lazy,
    позволяющая отложить генерацию URL до момента фактического использования
  • функция path,
    используемая для определения маршрутов в файле urls.py
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить