Evgenii Legotckoi
27 жовтня 2019 р. 14:56

EVILEG-CORE. Використання Google reCAPTCHA

Це буде перша стаття з використання набору усталених утиліт, які присутні в ядрі сайту EVILEG. Ця частина програмного коду сайту знаходиться в open source, тому хочу розповісти про те, який функціонал присутній в даній батарейці і як його використовувати.

Почну з використання Google reCAPTCHA , і що потрібно, щоб швидко впровадити даний функціонал.


Реєстрація reCAPTCHA

Першим кроком необхідно зареєструвати сайт в адмінки reCAPTCHA .

Приклад реєстрації сайту на Google reCAPTCHA

Впровадження

Додавання Google reCAPTCHA буде складатися з двох етапів:

  1. Впровадження reCAPTCHA на клієнтській стороні, тобто в HTML коді
  2. Впровадження reCAPTCHA на серверній стороні

При реєстрації сайту буде згенеровано два ключа:

  1. Site key - Ключ, який буде міститися на HTML сторінці
  2. Secret key - Ключ, який буде використовуватися для комунікації сайту і сервісом Google reCAPTCHA

Процес впровадження буде наступний. На HTML сторінці в формі, яка вимагає валідації дій користувача, поміщаємо script reCAPTCHA, і ключ сайту.

На стороні сервера додаємо декоратор на метод запиту для Class Based View.

Установка EVILEG-CORE

pip install evileg-core

Також evileg_core підтягне все необхожімо для даного пакета залежності. У тому числі бібліотеку requests , яка використовується для виконання запиту перевірки каптчі.

settings.py

Додаємо evileg_core в встановлені додатки

INSTALLED_APPS = [
    ...
    'evileg_core',
]

А також додаємо reCAPTCHA Secret Key і Site Key.

GOOGLE_RECAPTCHA_SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
GOOGLE_RECAPTCHA_SITE_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

urls.py

Обертаємо декоратором необхідну в'юшку

# -*- coding: utf-8 -*-

from django.conf.urls import url
from evileg_core.decorators import recaptcha

from . import views

app_name = 'registration'
urlpatterns = [
    path('register/', recaptcha(views.RegisterView.as_view()), name='register'),
]

views.py

А в самій в'юшки робимо перевірку на валідність reCAPTCHA. У моєму випадку це була в'юшки, успадковувати від FormView класу.

class RegisterView(FormView):
    form_class = UserCreationForm
    template_name = 'register.html'

    def form_valid(self, form):
        # перевірка валідності reCAPTCHA
        if self.request.recaptcha_is_valid:
            form.save()
            return render(self.request, 'register_success.html', self.get_context_data())
        return render(self.request, 'register.html', self.get_context_data())

клієнтська сторона

На стороні клієнта необхідно додати код підключення скрипта, місце розташування каптчі, а також виведення повідомлень про помилки.

{% extends 'home/base.html' %}
{% block content %}
  <form action="{% url 'registration:register' %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    {% load recaptcha from evileg_core %}
    {% recaptcha 'form-group' %}
    {% if messages %}
      {% for message in messages %}
        {{ message }}
      {% endfor %}
    {% endif %}
    <input type="submit" value="Register">
  </form>
{% endblock %}

Результат

У підсумку отримуємо досить просте впровадження reCAPTCHA на Django сайті.

Приклад Google reCaptcha на EVILEG-CORE

Для Django рекомендую VDS-сервера хостера Timeweb .

Рекомендовані статті на цю тему

По статті запитували0питання

1

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up