【发布时间】:2021-12-28 15:37:25
【问题描述】:
由于以下错误,我无法注册新用户:
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 %}
新用户已注册到数据库,但您可以看到错误error image 各位知道有什么问题吗?任何帮助表示赞赏!
【问题讨论】:
-
你缺少逗号:
{% url 'account:activate' uid64=uid,token=token %}
标签: python-3.x django