我正在尝试使用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
但是,我根本无法找到如何设置这些属性。
有人可以帮忙吗?
答案 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)来搜索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