2009-06-02 6 views
6

J'essaie d'utiliser la configuration de réinitialisation de mot de passe qui vient avec Django, mais la documentation n'est pas très bonne pour cela. J'utilise Django 1.0 et je continue à obtenir cette erreur:Django 1.0, en utilisant la réinitialisation de mot de passe par défaut

Caught an exception while rendering: Reverse for 'mysite.django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments ... 

dans mon URLconf j'ai quelque chose comme ceci:

#django.contrib.auth.views 
urlpatterns = patterns('django.contrib.auth.views',  
    (r'^password_reset/$', 'password_reset', {'template_name': 'accounts/registration/password_reset_form.html', 'email_template_name':'accounts/registration/password_reset_email.html', 'post_reset_redirect':'accounts/login/'}), 
    (r'^password_reset/done/$', 'password_reset_done', {'template_name': 'accounts/registration/password_reset_done.html'}), 
    (r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'password_reset_confirm', {'template_name': 'accounts/registration/password_reset_confirm.html', 'post_reset_redirect':'accounts/login/', 'post_reset_redirect':'accounts/reset/done/'}), 
    (r'^reset/done/$', 'password_reset_complete', {'template_name': 'accounts/registration/password_reset_complete.html'}), 
) 

Le problème semble être dans ce fichier:

password_reset_email.html 

à la ligne 7

{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %} 

Je ne sais pas ce qui se passe, donc toute aide serait appréciée.

Merci

Répondre

2

Je voulais juste poster la solution que je suis venu avec. Le problème était dans cette ligne:

{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %} 

Je ne suis pas 100% pourquoi non plus, donc je viens de l'URL pré-programmée comme ceci:

http://mysite.com/accounts/reset/{{uid}}-{{token}}/ 
0

Ce problème je me suis moi-même pas il y a 10 minutes. La solution consiste à ajouter la valeur post_change_redirect au dictionnaire des arguments que vous transmettez à la vue password_reset.

Donc, c'est ce que le mien maintenant ressembler à:

(r'^/password/$', password_change, {'template_name': 'testing/password.html', 'post_change_redirect': '/account/'}) 

J'espère que le fait pour vous! Je suis d'accord que la documentation pour cette fonctionnalité particulière manque un peu, mais cela a résolu exactement le même problème pour mon projet.

Modifier: J'aurais vraiment dû faire défiler - vous l'avez déjà inclus. Toutes mes excuses pour cela, mais j'espère que vous l'aurez trié :)

3

Modifier: J'ai utilisé votre exemple, et j'ai dû changer pour ne pas utiliser les paramètres de mot-clé.

{% url django.contrib.auth.views.password_reset_confirm uid, token %} 

Les paramètres nommés fonctionnent, tant que l'identificateur d'objet et le jeton sont définis. Si l'une ne sont pas définis ou vide, je reçois la même erreur que vous faites:

{% url django.contrib.auth.views.password_reset_confirm uidb36=uid, token=token %} 
+0

Pouvez-vous expliquer un peu plus. Que voulez-vous dire par "Essayez d'ajouter une ligne pour password_reset_confirm dans urls.py".La troisième URL dans mon exemple ci-dessus est pour password_reset_confirm. Sinon, comment dois-je l'ajouter à mon fichier urls.py? Merci – Joe

+0

Mon erreur en négligeant cela, j'ai édité ce qui a fonctionné pour moi ci-dessus. – dar

2

J'ai eu du mal avec cela pour plus une heure à essayer tout sur cette page et toutes les autres pages sur internet. Enfin, pour résoudre le problème dans mon cas, je devais supprimer

{% load url from future %} 

du haut de mon modèle password_reset_email.html.

Notez également "uidb36 = uid" dans le script url. Voici mon modèle complet de password_reset_email.html, j'espère qu'il sauve quelqu'un un certain temps:

{% autoescape off %} 
    You're receiving this e-mail because you requested a password reset for your user account at {{ site_name }}. 


Please go to the following page and choose a new password: 
{% block reset_link %} 
{{ protocol }}://{{ domain }}{% url django.contrib.auth.views.password_reset_confirm uidb36=uid token=token %} 
{% endblock %} 

Your username, in case you've forgotten:" %} {{ user.username }} 

Thanks for using our site! 

The {{ site_name }} team 

{% endautoescape %} 
Questions connexes