NoReverseMatch при регистрации - Джанго - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь добавить функцию подтверждения по электронной почте в мой проект django.Я уже создал представление и URL, но теперь получаю эту ошибку:

Reverse for 'activate' with keyword arguments '{'uidb64': 'MzA', 'token': '55y-fec02444935d88a056dc'}' not found. 1 pattern(s) tried: ['activate/<uidb64:\\[0\\-9A\\-Za\\-z_\\\\\\-\\]\\+\\)>/<token:\\[0\\-9A\\-Za\\-z\\]\\{1,13\\}\\-\\[0\\-9A\\-Za\\-z\\]\\{1,20\\}\\)/\\$>\\)/$']

Я думаю, что ошибка должна быть в URL, вот она:

path('activate/<uidb64:[0-9A-Za-z_\-]+)>/<token:[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$>)/', views.activate, name='activate'),

Я объявляю это неправильно?Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 01 мая 2019

Вы можете использовать это так:

path('activate/<str:uidb64>/<str:token>/', views.activate, name='activate')

(Этот раздел может не относиться к вашей ошибке noreversematch) Кроме того, когда вы собираетесь использовать реверс, убедитесь, что вы отправляете правильное значение для каждого ключевого аргумента. От вашего вопроса, я предполагаю, что они не верны (возможно, значение token принадлежит uidb64, а значение uidb64 принадлежит token). Если это так, то, пожалуйста, позвоните в обратном направлении, как это:

reverse('activate', kwargs={'token':'MzA', 'uid64': '55y-fec02444935d88a056dc'})

Или в URL:

{% url 'activate' token='MzA' uid64='55y-fec02444935d88a056dc' %}
1 голос
/ 01 мая 2019

Ваш path вызов выглядит как смесь типичных path шаблонов, а re_path (регулярное выражение) синтаксис, что делает его очень «странным».

Вы, вероятно, хотите определить что-то вроде:

from django.urls import <b>re_path</b>

# ...

<b>re_path</b>(<b>r</b>'^activate/(<b>?P<uidb64></b>[0-9A-Za-z_\-]+)/(<b>?P<token></b>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', views.activate, name='activate'),

Итак, вызов re_path, и вы определяете переменные с помощью (?P<variablename>pattern).

...