django-password-reset - 如何设置属性

时间:2014-01-24 17:10:29

标签: python django django-forms

我正在尝试使用django-password-reset(https://pypi.python.org/pypi/django-password-reset/0.2)来允许用户恢复其密码。

django-password-reset提供了一个表单,用户可以在其中输入用户名或电子邮件地址,并尝试在数据库中查找其中一个。 在我的项目中,用户没有用户名字段 - 只有电子邮件字段。 因此,我需要让它仅通过“电子邮件”字段搜索用户,而不是通过我的系统中不存在的“用户名”字段进行搜索。

项目文档说有些属性可以改变这种行为: http://django-password-reset.readthedocs.org/en/latest/views.html

但是,我根本无法找到如何设置这些属性。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

只需覆盖Recover视图:

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

myrecover = MyRecover.as_view()

因为有两个恢复网址,你需要首先传递一个签名,然后覆盖一个,然后包含一个,看起来不是很干,但这是使网址分配正确的唯一方法:

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

答案 1 :(得分:0)

django-password-reset的文档说明它使用django.contrib.auth.models.User(内置User模型的django)来搜索usernameemail。所以这里存在一个用户名。

如果您想更改django-password-reset的功能,可以进入forms.py文件并更改表单的search_fields变量(以及其他逻辑),以便仅通过电子邮件进行搜索。

这是forms.py的超链接:

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

我首先要更改PasswordRecoveryForm