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

Функция re_path

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

Основные параметры функции re_path: регулярное выражение, представление, которое будет обрабатывать запрос, и необязательные аргументы, такие как имя маршрута или дополнительные параметры. Регулярное выражение может содержать именованные группы для передачи параметров в представление.

Синтаксис

from django.urls import re_path re_path(route, view, kwargs=None, name=None)

Пример

Давайте создадим простой маршрут, который обрабатывает URL с числовым идентификатором статьи:

from django.urls import re_path from . import views urlpatterns = [ re_path(r'^articles/(?P<article_id>\d+)/$', views.article_detail, name='article_detail'), ]

Теперь создадим представление, которое обрабатывает этот маршрут:

from django.http import HttpResponse from myapp.models import Article def article_detail(request, article_id): article = Article.objects.get(id=article_id) return HttpResponse(f"Article title: {article.title}")

Пример

Давайте создадим маршрут с использованием слэгов, который обрабатывает URL вида "articles/my-first-article/":

from django.urls import re_path from . import views urlpatterns = [ re_path(r'^articles/(?P<slug>[\w-]+)/$', views.article_by_slug, name='article_by_slug'), ]

А теперь создадим представление для обработки этого маршрута:

from django.shortcuts import render from myapp.models import Article def article_by_slug(request, slug): article = Article.objects.get(slug=slug) return render(request, 'article_detail.html', {'article': article})

Пример

Давайте создадим маршрут, который обрабатывает дату в URL в формате "2024/12/25":

from django.urls import re_path from . import views urlpatterns = [ re_path(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/$', views.article_by_date, name='article_by_date'), ]

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

from django.http import JsonResponse from myapp.models import Article from datetime import datetime def article_by_date(request, year, month, day): date_str = f"{year}-{month}-{day}" date_obj = datetime.strptime(date_str, '%Y-%m-%d').date() articles = Article.objects.filter(created_at__date=date_obj) data = [{"title": article.title, "created_at": article.created_at} for article in articles] return JsonResponse(data, safe=False)

Пример

Давайте создадим маршрут с дополнительными параметрами через kwargs:

from django.urls import re_path from . import views urlpatterns = [ re_path(r'^users/(?P<username>\w+)/$', views.user_profile, kwargs={'show_posts': True}, name='user_profile'), ]

Представление, которое обрабатывает этот маршрут, будет получать дополнительный параметр:

from django.shortcuts import render from myapp.models import User, Post def user_profile(request, username, show_posts=False): user = User.objects.get(username=username) context = {'user': user} if show_posts: context['posts'] = Post.objects.filter(user=user) return render(request, 'user_profile.html', context)

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

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