django 自定义重置密码表单
django customize reset password form
我是 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 & google,但找不到合适的东西。
您想自定义PasswordReset
view. By default, it uses the PasswordResetForm
,您可以自定义
# in e.g. myapp/forms.py
from django.contrib.auth.forms import PasswordResetForm
class CaptchaPasswordResetForm(PasswordResetForm):
captcha = ReCaptchaField()
...
然后在您的 urls.py
中导入您的表单,并使用 form_class
指定表单。
from django.contrib.auth import views as auth_views
from django.urls import path
from web.forms import CaptchaPasswordResetForm
urlpatterns = [
path("accounts/password_reset/", auth_views.PasswordResetView.as_view(form_class=CaptchaPasswordResetForm)),
]
对于 Django < 1.11,您需要为 password_reset
视图自定义 URL 模式,并将 password_reset_form
设置为
from django.contrib.auth import views as auth_views
from myapp.forms import CaptchaPasswordResetForm
urlpatterns = [
...
url(
r'^password_reset/',
auth_views.password_reset,
{'password_reset_form': CaptchaPasswordResetForm},
)
]
有关在您的网址中包含密码重置视图的详细信息,请参阅 the docs。
我是 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 & google,但找不到合适的东西。
您想自定义PasswordReset
view. By default, it uses the PasswordResetForm
,您可以自定义
# in e.g. myapp/forms.py
from django.contrib.auth.forms import PasswordResetForm
class CaptchaPasswordResetForm(PasswordResetForm):
captcha = ReCaptchaField()
...
然后在您的 urls.py
中导入您的表单,并使用 form_class
指定表单。
from django.contrib.auth import views as auth_views
from django.urls import path
from web.forms import CaptchaPasswordResetForm
urlpatterns = [
path("accounts/password_reset/", auth_views.PasswordResetView.as_view(form_class=CaptchaPasswordResetForm)),
]
对于 Django < 1.11,您需要为 password_reset
视图自定义 URL 模式,并将 password_reset_form
设置为
from django.contrib.auth import views as auth_views
from myapp.forms import CaptchaPasswordResetForm
urlpatterns = [
...
url(
r'^password_reset/',
auth_views.password_reset,
{'password_reset_form': CaptchaPasswordResetForm},
)
]
有关在您的网址中包含密码重置视图的详细信息,请参阅 the docs。