Django.urls.exceptions.NoReverseMatch: Обратный поиск для 'activate' с аргументами в виде ключевых слов
Я не могу зарегистрировать нового пользователя из-за следующей ошибки:
django.urls.exceptions.NoReverseMatch: Reverse for 'activate' with keyword arguments '{'uid64': 'Mjk', 'token': 'aydhbh-1b0354ce0dd3df37193a6f22e95b0c4e'}' not found. 1 pattern(s) tried: ['account/activate/(?P<uidb64>[-a-zA-Z0-9_]+)/(?P<token>[-a-zA-Z0-9_]+)/$']
urls.py:
urlpatterns = [
path('register/', views.account_register, name='register'),
path('activate/<slug:uidb64>/<slug:token>/', views.account_activate, name='activate'),
# User dashboard
path('dashboard/', views.dashboard, name='dashboard'),
]
views.py:
def account_register(request):
if request.method == 'POST':
registerForm = RegistrationForm(request.POST)
if registerForm.is_valid():
user = registerForm.save(commit=False)
user.email = registerForm.cleaned_data['email']
user.set_password(registerForm.cleaned_data['password'])
user.is_active = False
user.save()
# Setup email
current_site = get_current_site(request)
subject = 'Active your account'
message = render_to_string('account/registration/account_activation_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
user.email_user(subject=subject, message=message)
return HttpResponse('Registered successfully and activation sent')
else:
registerForm = RegistrationForm()
return render(request, 'account/registration/register.html', {'form': registerForm})
def account_activate(request, uidb64, token):
try:
uid = force_text(urlsafe_base64_encode(uidb64))
user = UserBase.objects.get(pk=uid)
except(TypeError, ValueError, OverflowError, user.DoesNotExist):
user = None
if user is not None and account_activation_token.check_token(user, token):
user.is_active = True
user.save()
login(request, user)
return redirect('account:dashboard')
else:
return render(request, 'account/registration/activation_invalid.html')
account_activation_email.html:
{% autoescape off %}
Hi {{ user.user_name }},
Your account has been successfully created. Please click below link to activate your account.
http://{{ domain }}{% url 'account:activate' uid64=uid token=token %}
{% endautoescape %}
Новый пользователь зарегистрирован в БД, но как вы можете видеть там ошибка изображение ошибки. Ребята, вы знаете, что не так? Любая помощь будет принята с благодарностью!
Вы неправильно ввели первое имя слизня :
urlpatterns = [
Path ('activate / <slug: uidb64> / <slug: token> /', views.account_activate, name = 'enable'),
]
Первое имя slug - uidb64
, но в account_activation_email.html
вы пытаетесь присвоить uid64
Переименовать uidb64
в URL в uid64
:
urlpatterns = [
Path ('activate / <slug: uid64> / <slug: token> /', views.account_activate, name = 'enable'),
]