2010-02-16 12 views

risposta

28

Sono tutti lì costruiti nel Django. Basta aggiungere i modelli di URL pertinenti. Come segue.

from django.contrib.auth import views as auth_views 

patterns+=('', 
url(r'^passreset/$',auth_views.password_reset,name='forgot_password1'), 
url(r'^passresetdone/$',auth_views.password_reset_done,name='forgot_password2'), 
url(r'^passresetconfirm/(?P<uidb36>[-\w]+)/(?P<token>[-\w]+)/$',auth_views.password_reset_confirm,name='forgot_password3'), 
url(r'^passresetcomplete/$',auth_views.password_reset_complete,name='forgot_password4'), 
) 

E, oh, mentre ci sei, aggiungi anche le visualizzazioni e gli schemi di URL per la modifica della password.

url(r'^password/change/$', 
    auth_views.password_change, 
    name='auth_password_change'), 
url(r'^password/change/done/$', 
    auth_views.password_change_done, 
    name='auth_password_change_done'), 

sono elencati nel documentation naturalmente.

Dovrai fornire i tuoi modelli.

+1

+1 Grazie! Viene anche con l'email? – Viet

+2

Sì, è anche e-mail, gli id ​​e-mail pertinenti. –

+1

nota che se stai usando l'app di registrazione di django, devi solo includere urls.py della registrazione di django, cioè aggiungere 'url (r'^accounts/', include (' registration.urls ')) 'al tuo proprio urls.py –

4

In realtà poiché Django 1.4 c'è un modo semplice per ottenere il link password dimenticata appaiono direttamente nella pagina di amministrazione di accesso (che suona come la precisa domanda richiesto):

https://docs.djangoproject.com/en/1.4/ref/contrib/admin/#auth-password-reset

È possibile aggiungere un funzionalità di reimpostazione della password per il sito di amministrazione aggiungendo alcune linee al tuo URLconf. In particolare, aggiungere questi quattro modelli:

url(r'^admin/password_reset/$', 
    'django.contrib.auth.views.password_reset', 
    name='admin_password_reset'), (r'^admin/password_reset/done/$', 
    'django.contrib.auth.views.password_reset_done'), 
(r'^reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 
    'django.contrib.auth.views.password_reset_confirm'), 
(r'^reset/done/$', 
    'django.contrib.auth.views.password_reset_complete'), 

(Questo presuppone hai aggiunto l'amministratore a admin/e richiede che si mette gli URL che iniziano con ^ admin/prima della riga che include il admin app stesso).

Modificato in Django 1.4 La presenza del nome admin_password_reset URL causerà una “Password dimenticata?” Link ad apparire sul admin predefinita di log-in pagina sotto la casella della password

+0

+1 Grazie Stefano! La domanda è stata posta quando stavo ancora usando Django 1.2/1.3 :) – Viet

+0

@Viet l'ho pensato! Ma mi piace dare un rinfresco anche alle vecchie risposte quando appare una nuova soluzione più semplice! – Stefano