4

私はdjangoの初心者です(django 1.7 python 2.7)。

django リセット パスワード フォームにキャプチャの recaptchaを追加しようとしています。

この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を検索しましたが、適切なものが見つかりませんでした。

4

1 に答える 1

7

PasswordResetビューをカスタマイズしたい。デフォルトでは、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)),
]

password_resetDjango < 1.11 の場合、ビューの 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},
    )
]

URL にパスワード リセット ビューを含める方法の詳細については、 ドキュメントを参照してください。

于 2015-09-16T09:36:37.787 に答える