python django python-3.x django-templates django-2.0

python - NoReverseMatch con argumento de palabra clave uidb64 con Django 2.0



python-3.x django-templates (1)

En Django 2.0 debe llamar a decode() después de codificar en base64 el uid, para convertirlo en una cadena:

message = render_to_string(''acc_active_email.html'', { ''user'': user, ''domain'': current_site.domain, ''uid'': urlsafe_base64_encode(force_bytes(user.pk)).decode(), ''token'': account_activation_token.make_token(user), })

Consulte la nota en las notas de la versión de Django 2.0 para obtener más información.

No puedo entender por qué mi código no funciona. Antes funcionaba, pero ahora, cuando ejecuto el servidor y pruebo, el código no funciona.

Cuando el usuario se registra, le envío un correo electrónico de activación, como este:

def send_activation_email(serializer, request, user): current_site = get_current_site(request) message = render_to_string(''acc_active_email.html'', { ''user'': user, ''domain'': current_site.domain, ''uid'': urlsafe_base64_encode(force_bytes(user.pk)), ''token'': account_activation_token.make_token(user), }) mail_subject = ''Activate your blog account.'' to_email = serializer.data[''email''] email = EmailMessage(mail_subject, message, to=[to_email]) email.send()

acc_active_email.html

{% autoescape off %} Hi {{ user.username }}, Please click on the link to confirm your registration, http://{{ domain }}{% url ''activate'' uidb64=uid token=token %} {% endautoescape %}

y mi archivo url

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

pero tengo este error:

Exception Type: NoReverseMatch Exception Value: Reverse for ''activate'' with keyword arguments ''{''uidb64'': b''NDM'', ''token'': ''4qz-8f770502bd8b02786da9''}'' not found. 1 pattern(s) tried: [''activate/(?P<uidb64>[0-9A-Za-z_//-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$'']

resalta esta línea http://{{ domain }}{% url ''activate'' uidb64=uid token=token %}