Ответ
re_path — это функция в Django для определения URL-маршрутов с использованием регулярных выражений (regex). Она находится в модуле django.urls и предоставляет максимальную гибкость в описании сложных URL-шаблонов, которые не могут быть описаны с помощью стандартных конвертеров path.
Пример:
from django.urls import re_path
from . import views
urlpatterns = [
# Маршрут для архива статей по годам, например /articles/2023/
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]
В этом примере регулярное выражение r'^articles/(?P<year>[0-9]{4})/$ соответствует URL-адресам вида /articles/2023/ и извлекает год в качестве именованного аргумента year, который передается в представление views.year_archive.
Ключевое отличие от path:
pathиспользует простой синтаксис с конвертерами путей (например,<int:pk>), что делает его более читаемым и предпочтительным для стандартных случаев.re_pathиспользует всю мощь Python-модуляre, что необходимо для нестандартных или устаревших URL-схем, которые не покрываются конвертерамиpath.
Рекомендация:
Всегда используйте path, если это возможно. Прибегайте к re_path только тогда, когда гибкости path недостаточно для решения вашей задачи.
Ответ 18+ 🔞
Слушай, вот есть у нас в Django эта штука — re_path. Представь себе, что path — это такой аккуратный, культурный парень, который всё делает по правилам: «дай-ка мне число, я его как int передам». А re_path — это его старший братан, который пришёл из 90-х, в кожанке, и говорит: «Забудь про эти ваши конвертеры, я тут регуля́рками рулю, понимаешь?»
По сути, это та же функция для маршрутов, но она жрёт регулярные выражения. Полная мощь, полный беспредел. Лежит в django.urls.
Смотри, как это выглядит:
from django.urls import re_path
from . import views
urlpatterns = [
# Ловим, блядь, статьи по годам. Например, /articles/2023/
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive),
]
Видишь эту дичь r'^articles/(?P<year>[0-9]{4})/$'? Это и есть регулярка. Она как стражник на въезде: «Хуй тебе, а не пройдёшь, если не четыре цифры подряд!» А если пройдёшь — выцепит эти цифры, назовёт их year и сунет прямо в твою вьюху views.year_archive. Красота, ёпта!
А в чём, собственно, разница с path?
path— это цивилизация. Пишешь<int:pk>и спишь спокойно. Читаемо, понятно, не надо ебать мозг.re_path— это когда тебе нужно что-то настолько ебнутое, что стандартными конвертерами не описать. Типа, «ловим только номера, которые делятся на 7, но не заканчиваются на 13». Вот тут-то и включается старший братан с его регуля́рками.
Мой тебе совет, как старого, видавшего виды, пердуна:
Если можно сделать через path — делай через path. Не выёбывайся. re_path — это как аптечный спирт: мощно, но если не умеешь с ним обращаться, можно и глаза остаться. Используй его только тогда, когда path сдаётся и говорит: «Ну нахуй, сам разбирайся с этим пиздецом».