Django projelerinizde Google reCAPTCHA kullanmak isterseniz bir kaç basit adım ile yapabilirsiniz.
Önce Google'dan reCaptcha apisi için kodları alıyoruz.
https://www.google.com/recaptcha/
Django ile oluşturduğunuz projenizde önce gelecek sorgu linkini urls.py de tanımlıyoruz.
urls.py
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path
from xxx.views import anasayfa, captchatest
urlpatterns = [
path('', anasayfa),
path('captchatest/', captchatest),
path('admin/', admin.site.urls),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
<h1>HTML Form</h1>
<form action="/captchatest/" method="post">
<p>
<label for="firstname">first name: </label>
<input type="text" id="firstname"><br />
<label for="lastname">last name: </label>
<input type="text" id="lastname"><br />
<label for="email">email: </label>
<input type="text" id="email"><br>
<div class="g-recaptcha" data-callback="recaptchaCallback" data-sitekey="6LfXCksUAAAAAHa-hgbrLjSOk6Az_0nLMaXXXXXX"></div>
<input type="submit" id="btn_kontrolet" value="Oluştur" disabled>
</p>
</form>
<script src="https://www.google.com/recaptcha/api.js?hl=tr">/script>
<script>
function recaptchaCallback() {
$('#btn_kontrolet').removeAttr('disabled');
};
</script>
def captchatest(request):
if request.method == "POST":
grecaptcha = request.POST.get('g-recaptcha-response')
ip = request.META.get('REMOTE_ADDR')
secretkey = "6LfXCksUAAAAABkl5BcNcVG2Ns1Wg4Wah6d0SXXXXXX"
onaylandi = requests.get("https://www.google.com/recaptcha/api/siteverify?secret={}&response={}&remoteip={}".format(secretkey, grecaptcha, ip)).json()['success']
logging.info(onaylandi)
if onaylandi:
return render(request, 'onaylandi_sayfasi.html')
else:
return render(request, 'onaylanMAdi_sayfasi.html')
else:
return render(request, 'captchatest.html')