URL-адрес Джанго / порядок маршрута не поддерживается - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть следующее в моем корневом модуле URLconf (есть больше, но не важно, поэтому опущено):

urlpatterns = [
    re_path(r'^password-reset-redirect-view/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
            password_reset_redirect,
            name = 'password_reset_confirm'),
    path('', include('search.urls')),
    path('', include('customer_portal.urls')),
    path('rest-auth/', include('rest_auth.urls')),
    path('rest-auth/registration/', include('rest_auth.registration.urls')),

Вот customer_portal.urls :

urlpatterns = [
    path('customer/contact/', views.contact),
    path('', views.home),
    re_path(r"^confirm-email/(?P<key>[-:\w]+)/$", views.email_verification,
        name="account_confirm_email"),
]

Вот rest_auth.registration.urls :

urlpatterns = [
    url(r'^$', RegisterView.as_view(), name='rest_register'),
    url(r'^verify-email/$', VerifyEmailView.as_view(), name='rest_verify_email'),
    url(r'^account-confirm-email/(?P<key>[-:\w]+)/$', TemplateView.as_view(),
        name='account_confirm_email'),
]

Как вы видите, оба включенных urls.py urlpatterns имеют представление с именем account_confirm_email.

Где-то в коде это выполняется:

url = reverse(
            "account_confirm_email",
            args=[emailconfirmation.key])

Поскольку customer_portal.urls включен до rest_auth.registration.urls, я ожидаю, что маршрут account_confirm_email в customer_portal.urls будет возвращен вышеупомянутым reverseметод.Но вместо этого я получаю rest_auth.registration.urls маршрутный URL.

Просто чтобы быть уверенным, что я закомментировал маршрут в rest_auth.registration.urls, а затем я получил правильный URL (customer_portal URL).

Это заполнено в электронном письме, я проверяю это электронное письмо и вижу, что у меня есть требуемый URL: http://127.0.0.1:8000/confirm-email/......./ вместо: http://127.0.0.1:8000/rest-auth/registration/account-confirm-email/...../

Может кто-нибудь сказать мне, почему customer_portal URL не является обратным в обоих случаях?

Документы Django говорят:

Django просматривает каждый шаблон URL по порядку и останавливается на первом, который соответствуетзапрошенный URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...