django自定义重置密码表单

时间:2015-09-16 09:20:36

标签: python django django-forms recaptcha reset-password

我是django的初学者(django 1.7 python 2.7)。

我正在尝试将no captcha recaptcha添加到我的django重置密码表单中。

我正在尝试使用此recaptcha djano plugin

我已按照说明添加了必要设置:

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&谷歌,但找不到合适的东西。

1 个答案:

答案 0 :(得分:3)

您想要自定义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},
    )
]

有关在网址中添加密码重置视图的详细信息,请参阅the docs