djangoでreCAPTCHAを導入しました。
参考になる記事が限定的だったので、書き残しておきます。
django-recapchaがあるのですが、日本語解説記事もないので今回は使ってません。
環境
- Django(3.1.5)
- reCAPTCHA v2
- python(3.6.5)
参考資料
- How to Add reCAPTCHA to a Django Site
- django-recaptcha
- Django - 迷惑メール対策 - フォームに画像認証の reCAPTCHA を導入する
1.API-KEYを発行
reCAPTCHAにアクセスして、SECRET_KEY
とSITE_KEY
を発行します。
参考動画はこちら
本編は、wagtailの話なので冒頭のみ参考に。
2.settings.pyに反映
settings.py
にSECRET_KEY
を反映させます。
settings.py
GOOGLE_RECAPTCHA_SECRET_KEY = *******************************
3.htmlファイルに反映
下記を追加します
<script src='https://www.google.com/recaptcha/api.js'></script>
<div class="g-recaptcha" data-sitekey="6LffvWgaAAAAAEwCrsrcNLJr8DyjgnUx4p5JMLed"></div>
4.views.pyに反映
下記を追加します。
大体、if form.is_valid():
の下に書きますよね。
views.py
from django.conf import settings
from django.contrib import messages
import requests
recaptcha_response = request.POST.get('g-recaptcha-response') #POSTされたデータを受けとる
data = {
'secret': settings.GOOGLE_RECAPTCHA_SECRET_KEY,
'response': recaptcha_response
}
r = requests.post('https://www.google.com/recaptcha/api/siteverify', data=data)
result = r.json()
完了です。
django-rechapchaが用意されてるので、本当は使うべきですね。
上手くできなければ、コメントください。
変更履歴
- 2021.08.01 追記・修正