cuando uso django.contrib.auth.views.password_reset_confirm sin argumentos en absoluto, funciona y puedo representar la plantilla sin ningún problema, al agregar uidb36 y los argumentos de token fallan.
Capturó NoReverseMatch mientras se renderizaba: Invertido para "django.contrib.auth.views.password_reset_confirm" con argumentos "()" y argumentos de palabra clave "{" uidb36 ":" 111 "," token ":" 1111111111111 "}" no encontrado.
Respuestas
24 para la respuesta № 1Lo más probable es que sea un problema con su urls.py. Debe configurar el patrón correcto para capturar los valores de uidb36 y token pasados como parámetros de URL. Si no, lanzará un error similar a lo que ves arriba.
Algo como:
(r"^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$", "django.contrib.auth.views.password_reset_confirm", {"template_name" : "registration/password_reset.html", "post_reset_redirect": "/logout/" })
registration / password_reset.html - es mi plantilla personalizada
cerrar sesión - es mi acción de cierre de sesión personalizada
6 para la respuesta № 2
Tuve este problema en Django 1.3 y perdí mucho tiempo porque el error puede enmascarar una serie de problemas subyacentes.
Necesitaba agregar esto a la parte superior de la plantilla de correo electrónico de restablecimiento:
{% load url from future %}
Además, el ejemplo en los documentos de Django no coincide con la url de muestra:
{{ protocol}}://{{ domain }}{% url "auth_password_reset_confirm" uidb36=uid token=token %}
Así que tuve que cambiar el auth_password_reset_confirm
por encima de password_reset_confirm
.
6 para la respuesta № 3
Si estás usando Django 1.6+ y te encuentras con algo como esto, es posible que necesites actualizar uidb36 a uidb64 tanto en tu plantilla como en tus URL.
Ejemplo url:
url(r"^password/reset/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$",
auth_views.password_reset_confirm
y restablecer enlace en la plantilla:
{{ protocol}}://{{ domain }}{% url "django.contrib.auth.views.password_reset_confirm" uidb64=uid token=token %}
2 para la respuesta № 4
Para usuarios de Django 1.8+, simplemente copie esta URL a su principal urls.py archivo, para que reconozca el nombre de la URL
url(r"^reset/(?P<uidb64>[0-9A-Za-z_-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$",
"django.contrib.auth.views.password_reset_confirm",
name="password_reset_confirm"),
Y agrega esto mencionado por: @Lunulata a tu password_reset_email.html archivo:
{{ protocol}}://{{ domain }}{% url
"django.contrib.auth.views.password_reset_confirm" uidb64=uid token=token %}
1 para la respuesta № 5
Intenta agregar los siguientes a tu urls.py
(r"^reset/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$", "django.contrib.auth.views.password_reset_confirm"),
0 para la respuesta № 6
Encontré esto para trabajar, copiado de la url predeterminada
url(r"^reset/(?P<uidb64>[0-9A-Za-z_-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$",
auth_views.password_reset_confirm, name="password_reset_confirm"),