28 Mart 2024 21:45

Anasayfa

undefined...

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)
 

 xxx uygulaması içindeki views.py dosyamıza; gelen url sorgunu karşılamak için bir fonksiyon ekliyoruz.

 

 Artık html sayfamızı ve formumuzu hazırlayabiliriz.

captchatest.html

<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>
 

views.py

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')
 Oluşan kod ile aldığımız SecretKey i karşılaştırıp onay alıyoruz.

Daha sonra eğer onaylandı ise istediğimiz sayfalara yönlendirme yapıyoruz.

NOT: Captcha nın tıklanıp tıklanmadını öğrenip formu duruma göre yönlendirme yapmak için captcha divinin içine bir callback ekliyoruz ve jQuery ile kontrol edip butona tıklanma izni veriyoruz.

hl=tr parametresi Türkçe dil seçimi için kullanılır. (host language)

 

Makdos Bilişim Teknolojileri 2015 - 2022