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