Когда я должен использовать «путь» над «re_path»? - PullRequest
2 голосов
/ 21 марта 2019

Вот пример из Django Docs :

from django.urls import include, path

urlpatterns = [
    path('index/', views.index, name='main-view'),
    path('bio/<username>/', views.bio, name='bio'),
    ...
]
from django.urls import include, re_path

urlpatterns = [
    re_path(r'^index/$', views.index, name='index'),
    re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'),
    ...
]

Насколько я понимаю, синтаксис path более читабелен и предлагает угловые скобки, которые могут собирать информацию изURL и преобразование типа.

Должен ли я использовать re_path только , когда мне нужно регулярное выражение, и использовать path для всех остальных случаев?

Ответы [ 2 ]

1 голос
/ 21 марта 2019

re_path является реализацией «старого» способа обработки URL , который ранее (версия <2) выполнялся <a href="https://docs.djangoproject.com/en/1.11/ref/urls/#django.conf.urls.url" rel="nofollow noreferrer">url от django.conf.urls.

См. Параграф Дополнительные заметки Django 2.0 об этом.

Как говорится, Я рекомендую использовать path, когда вы можете!

Причины, которые я вижу:

  1. path была введена с целью сделать вещи проще, что, несомненно, является тем направлением, в котором хотят развиваться разработчики Django. Таким образом, при использовании path вы следуете этому направлению, сводя к минимуму риск необходимости адаптировать свою кодовую базу к новым изменениям.

  2. Хотя path является не просто результатом попытки сделать вещи проще, на самом деле это действительно делает вещи проще и читабельнее, что является хорошей причиной того, почему path предпочтительнее, если оба выбор возможен.

Теперь re_path существует по причинам, поэтому бывают случаи, когда использование re_path может быть лучшим вариантом. Ясно, что один сценарий очевиден, когда требуется очень настраиваемый преобразователь и достигается предел, достижимый с помощью пользовательских преобразователей для 'path' . Еще один сценарий использования re_path может быть при обновлении системы с довольно сложными URL-конвертерами с Django 1.x до 2.x: простая замена команд url на re_path может быть намного более экономной по времени. и, таким образом, желаемый подход.

0 голосов
/ 21 марта 2019

Вы получили это.Более новый синтаксис path обеспечивает более чистые шаблоны URL.Вы также можете написать свои собственные конвертеры путей , чтобы больше ваших путей могли использовать path вместо re_path.

...