2014-01-24 57 views
0

我正在嘗試使用django-password-reset(https://pypi.python.org/pypi/django-password-reset/0.2)來允許用戶恢復其密碼。django-password-reset - 如何設置屬性

django-password-reset提供了一個表單,用戶可以輸入他們的用戶名或電子郵件地址,並嘗試在數據庫中找到其中的一個。 在我的項目中,用戶沒有用戶名字段 - 只有電子郵件字段。 因此,我需要通過'email'字段來搜索用戶,而不是通過我的系統中不存在的'用戶名'字段來搜索用戶。

項目文檔說有屬性可以更改此行爲: http://django-password-reset.readthedocs.org/en/latest/views.html

但是,我根本找不到如何設置這些屬性。

有人可以幫忙嗎?

回答

1

只是覆蓋Recover視圖像這樣開始:

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

myrecover = MyRecover.as_view() 

因爲有兩個恢復網址,您需要先通過簽名,然後重寫,然後是inclu ded之一,似乎不是非常乾燥,但它是唯一的方式使網址正確地發送:

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

工作正常!我錯過了網址。但是,我將更小的修補程序應用於代碼(請參閱編輯)。希望這些更改將被應用。 –

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

+0

感謝您的回答。但是,我想避免在django-password-reset代碼中進行直接更改,因爲我想在另一臺計算機上部署系統,而無需再次進行相同的更改。 –