Добавяне на функция за забравена парола към администраторския сайт на Django

Как да добавите функцията за забравена парола към администраторския сайт на Django? С опции за имейл/защитен въпрос? Има ли налични добавки/разширения?


person Viet    schedule 16.02.2010    source източник


Отговори (2)


Всички те са вградени в django. Просто добавете съответните URL модели. Както следва.

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

И, о, докато сте там, добавете и изгледите и URL моделите за промяна на паролата.

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

Те са изброени в документацията разбира се.

Ще трябва да предоставите свои собствени шаблони.

person lprsd    schedule 16.02.2010
comment
Да, също изпраща имейли, съответните имейл адреси. - person lprsd; 16.02.2010
comment
имайте предвид, че ако използвате приложението django-registration, тогава трябва само да включите urls.py на django-registration, т.е. добавете url(r'^accounts/', include('registration.urls')) към вашия собствен urls.py - person Lie Ryan; 07.01.2012

Всъщност от Django 1.4 има лесен начин връзката за забравена парола да се показва директно в страницата за вход на администратора (което звучи като точния зададен въпрос):

https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#adding-a-password-reset-feature

Можете да добавите функция за повторно задаване на парола към администраторския сайт, като добавите няколко реда към вашия URLconf. По-конкретно, добавете тези четири модела:

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

(Това предполага, че сте добавили администратора в admin/ и изисква да поставите URL адресите, започващи с ^admin/ преди реда, който включва самото приложение за администратор).

Променено в Django 1.4 Наличието на URL адрес с име admin_password_reset ще доведе до „забравена парола?“ връзка, за да се появи на страницата за вход на администратора по подразбиране под полето за парола

person Stefano    schedule 02.07.2013
comment
+1 Благодаря Стефано! Въпросът беше зададен, когато все още използвах Django 1.2/1.3 :) - person Viet; 03.07.2013
comment
@Viet си помисли така! Но обичам да давам опресняване дори на стари отговори, когато се появи ново по-лесно решение! - person Stefano; 04.07.2013