manage - templates django settings
Django reset_password_confirm TemplateSyntaxError problem (7)
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 falla.
Capturó NoReverseMatch mientras se procesa: Invertido para ''django.contrib.auth.views.password_reset_confirm'' con argumentos ''()'' y argumentos de palabra clave ''{'' uidb36 '':'' 111 '','' token '':'' 1111111111111 ''}'' no encontrado.
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''),
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''),
Lo 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
logout - es mi acción de logout personalizada
Para usuarios de Django 1.8+, simplemente copie esta URL a su archivo urls.py principal, 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 agregue esto mencionado por: @Lunulata a su archivo password_reset_email.html :
{{ protocol}}://{{ domain }}{% url
''django.contrib.auth.views.password_reset_confirm'' uidb64=uid token=token %}
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 %}
Solo agrega esta línea a tu urls.py:
url(''^'', include(''django.contrib.auth.urls'')),
Esto habilita el flujo de trabajo de django reset_password.
Luego invalide su login.html para incluir la línea: <div class="password-reset-link"> href="{{ password_reset_url }}">{% trans ''Forgotten your password or username?'' %}</a></div>
<div class="password-reset-link"> href="{{ password_reset_url }}">{% trans ''Forgotten your password or username?'' %}</a></div>
Ahora debería poder usar el Django PasswordResetView incorporado incluido con Django siempre que su configuración de correo electrónico esté configurada.
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
anterior a password_reset_confirm
.