2009-06-02 14 views
6

Sto provando a utilizzare l'impostazione di reimpostazione della password fornita con Django, ma la documentazione non è molto buona per questo. Sto usando Django 1.0 e continuo a ricevere questo errore:Django 1.0, utilizzando la reimpostazione della password predefinita

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

nel mio urlconf ho qualcosa di simile:

#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'}), 
) 

Il problema sembra essere in questo file:

password_reset_email.html 

on line 7

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

Sono in perdita per ciò che sta accadendo, quindi qualsiasi aiuto sarebbe apprezzato.

Grazie

risposta

2

Volevo solo pubblicare la soluzione che mi è venuta in mente. Il problema era in questa linea:

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

io non sono davvero un 100% perché entrambi, quindi ho solo hard coded l'url in questo modo:

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

Questo è un problema che ho capito io non 10 minuti fa. La soluzione è aggiungere il valore post_change_redirect al dizionario degli argomenti che si stanno passando alla vista password_reset.

Quindi questo è ciò che il mio apparire così:

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

Spero che fa per voi! Sono d'accordo sul fatto che la documentazione per questa particolare funzionalità sia in qualche modo carente, ma questo ha risolto esattamente lo stesso problema per il mio progetto.

Edit: ho davvero dovuto scorrere attraverso - hai inserito già. Ci scusiamo per questo, ma spero che lo abbia risolto :)

3

Modifica: Ho usato il tuo esempio e ho dovuto cambiare per non usare i parametri delle parole chiave.

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

I parametri denominati funzionano, purché sia ​​l'uid sia il token siano definiti. Se uno dei due non è definito o vuoto ottengo lo stesso errore che si fa:

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

Puoi spiegare questo un po 'di più. Cosa intendi con "Prova ad aggiungere una riga per password_reset_confirm in urls.py".Il terzo URL nel mio esempio precedente è per password_reset_confirm. In quale altro modo dovrei aggiungerlo al mio file urls.py? Grazie – Joe

+0

Il mio errore nel trascurare questo, ho modificato ciò che ha funzionato per me sopra. – dar

2

ho lottato con questo per più di un'ora cercando tutto su questa pagina e su ogni altra pagina su internet. Infine per risolvere il problema nel mio caso ho dovuto eliminare

{% load url from future %} 

dalla parte superiore del mio modello password_reset_email.html.

Si noti inoltre, "uidb36 = uid" nello script URL. Ecco il mio modello completo password_reset_email.html, spero che salvi qualcuno qualche volta:

{% 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 %} 
Problemi correlati