2015-09-16 27 views
3

我是一個Django的初學者(Django 1.7 python 2.7)。django自定義重置密碼的形式

我正在嘗試將no captcha recaptcha添加到我的django重置密碼錶單中。

我想用這個recaptcha djano plugin

我按照指示,並添加necessay設置:

Installed django-recaptcha to the Python path.

Added captcha to the INSTALLED_APPS setting.

添加以下到我的settings.py文件:

RECAPTCHA_PUBLIC_KEY = '76wtgdfsjhsydt7r5FFGFhgsdfytd656sad75fgh' # fake - for the purpose of this post. 
RECAPTCHA_PRIVATE_KEY = '98dfg6df7g56df6gdfgdfg65JHJH656565GFGFGs' # fake - for the purpose of this post. 
NOCAPTCHA = True 

的指令,則建議將驗證碼添加到表單中,如下所示:

from django import forms 
from captcha.fields import ReCaptchaField 

class FormWithCaptcha(forms.Form): 
    captcha = ReCaptchaField() 

如何訪問內置的重置密碼錶單?作爲初學者,我懷疑我必須自定義內置的重置密碼錶單,但我該怎麼做?我甚至不確定內置重置密碼錶單的位置。如何在重置密碼錶單中自定義構建或推入教程的示例將很方便。

我已經搜索了SO &谷歌,但找不到合適的東西。

回答

2

您想自定義password_reset視圖。默認情況下,它使用您可以自定義的PasswordResetForm

# in e.g. myapp/forms.py 
from django.contrib.auth.forms import PasswordResetForm 

class CaptchaPasswordResetForm(PasswordResetForm): 
    captcha = ReCaptchaField() 
    ... 

然後在你的urls.py,導入您的形式,並使用password_reset_form參數指定的形式。

from django.contrib.auth import views as auth_views 
from myapp.forms import CaptchaPasswordResetForm 

urlpatterns = [ 
    ... 
    url(
     '^password_reset/', 
     auth_views.password_reset, 
     {'password_reset_form': CaptchaPasswordResetForm}, 
    ) 
] 

有關在您的URL中包含密碼重置視圖的更多信息,請參閱the docs

+0

阿拉斯代爾,感謝您的代碼。我改變了一些代碼,但你肯定會把我推向終點。 – user3354539

+0

很高興你的工作!如果代碼中存在任何錯誤,您可以建議編輯以幫助未來的訪問者。 – Alasdair

+0

Alasdir,代碼沒有錯誤,只是改變了我的表單/ url等環境。再次感謝。 – user3354539