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

Функция reverse_lazy

Функция reverse_lazy применяется для отложенного построения URL-адресов, когда требуется передать URL в место, где он не может быть вычислен немедленно, например, в атрибуты классов представлений. Она принимает те же аргументы, что и функция reverse: имя маршрута, аргументы и ключевые аргументы. В отличие от reverse, которая возвращает строку с URL немедленно, reverse_lazy возвращает объект, который преобразуется в строку только тогда, когда к нему обращаются как к строке.

Синтаксис

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

Параметры функции:

  • viewname - имя маршрута (строка) или путь к представлению, например, 'myapp:index'.
  • args - позиционные аргументы для подстановки в URL (список или кортеж).
  • kwargs - именованные аргументы для подстановки в URL (словарь).
  • urlconf - URL-конфигурация для использования (по умолчанию None).
  • current_app - указывает на текущее приложение для разрешения пространства имен (по умолчанию None).

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

Рассмотрим пример использования reverse_lazy в классе CreateView для указания URL перенаправления после успешного создания объекта:

from django.views.generic import CreateView from django.urls import reverse_lazy from myapp.models import Article class ArticleCreateView(CreateView): model = Article fields = ['title', 'content'] success_url = reverse_lazy('myapp:article_list')

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

Функция reverse_lazy поддерживает передачу позиционных и именованных аргументов. Например, создадим URL для просмотра статьи с определенным идентификатором:

from django.urls import reverse_lazy article_detail_url = reverse_lazy('myapp:article_detail', args=[42]) print(article_detail_url)

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

"/articles/42/"

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

Используем именованные аргументы для построения URL со слагом статьи:

from django.urls import reverse_lazy url = reverse_lazy('myapp:article_detail', kwargs={'slug': 'django-basics'}) print(url)

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

"/articles/django-basics/"

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

Рассмотрим использование reverse_lazy в методе get_absolute_url модели. Важно отметить, что в этом случае лучше использовать reverse, но для демонстрации работы reverse_lazy покажем пример:

from django.db import models from django.urls import reverse_lazy class Article(models.Model): title = models.CharField(max_length=100) slug = models.SlugField(unique=True) def get_absolute_url(self): return reverse_lazy('myapp:article_detail', kwargs={'slug': self.slug})

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

  • функция reverse,
    которая немедленно возвращает строку URL
  • функция resolve,
    которая преобразует URL в соответствующее представление
  • функция path,
    которая определяет маршрут в URL-конфигурации
  • класс RedirectView,
    который использует reverse_lazy для построения URL перенаправления
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить