2014-01-24 5 views
0

Я пытаюсь использовать django-password-reset (https://pypi.python.org/pypi/django-password-reset/0.2), чтобы пользователи могли восстановить свои пароли.django-password-reset - как установить атрибуты

django-password-reset предоставляет форму, в которой пользователь может ввести свое имя пользователя или адрес электронной почты и пытается найти один из них в базе данных. В моем проекте пользователь не имеет поля имени пользователя - только поле электронной почты. Таким образом, мне нужно сделать поиск пользователей только по полю «электронная почта», а не по полю «имя пользователя», которого нет в моей системе.

Документация к проектам говорит, что для изменения этого параметра есть атрибуты: http://django-password-reset.readthedocs.org/en/latest/views.html.

Однако я просто не могу узнать, как установить эти атрибуты.

Может кто-нибудь помочь?

ответ

1

Просто переопределить Recover вид следующим образом:

class MyRecover(Recover): 
    search_fields = ['email'] 

myrecover = MyRecover.as_view() 

потому что есть два восстановления URL-адреса, вам нужно сначала передать подпись с первой, а затем переопределенной, а затем включить что один из них, кажется, не очень СУХОЙ, но это единственный способ, чтобы URL-адреса были отправлены правильно:

url(r'^recover/(?P<signature>.+)/$', 'password_reset_recover.views.recover_done', 
    name='password_reset_sent'), 
# next we override our url, assuming your app name is called 'core' 
url(r'^recover/$', 'core.views.myrecover', name='password_reset_recover'), 
url(r'^/', include('password_reset.urls')), 
+0

Это сработало! Мне не хватало URL-адресов. Тем не менее, я применил к меньшим исправлениям кода (см. Править). Надеемся, что изменения будут применены. –

0

Документация django-password-reset говорит, что он использует django.contrib.auth.models.User (на Джанго, построенный в User модели) для поиска username или email. Итак, здесь будет существовать имя пользователя.

Если вы хотите изменить функциональность django-password-reset вы можете пойти в файл forms.py и изменить search_fields переменной формы (и другую логику), так что это только поиски по электронной почте.

Вот гиперссылка на forms.py:

https://github.com/brutasse/django-password-reset/blob/master/password_reset/forms.py

Я хотел бы начать с изменением PasswordRecoveryForm

+0

Спасибо за ваш ответ. Тем не менее, я хотел бы избежать прямых изменений кода django-password-reset, так как я хочу развернуть систему на другой машине, не повторяя там те же изменения. –

Смежные вопросы