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

  1. pip install evileg-core

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

settings.py

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

  1. INSTALLED_APPS = [
  2. ...
  3. 'evileg_core',
  4. ]

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

  1. GOOGLE_RECAPTCHA_SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
  2. GOOGLE_RECAPTCHA_SITE_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

urls.py

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

  1. # -*- coding: utf-8 -*-
  2.  
  3. from django.conf.urls import url
  4. from evileg_core.decorators import recaptcha
  5.  
  6. from . import views
  7.  
  8. app_name = 'registration'
  9. urlpatterns = [
  10. path('register/', recaptcha(views.RegisterView.as_view()), name='register'),
  11. ]

views.py

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

  1. class RegisterView(FormView):
  2. form_class = UserCreationForm
  3. template_name = 'register.html'
  4.  
  5. def form_valid(self, form):
  6. # перевірка валідності reCAPTCHA
  7. if self.request.recaptcha_is_valid:
  8. form.save()
  9. return render(self.request, 'register_success.html', self.get_context_data())
  10. return render(self.request, 'register.html', self.get_context_data())

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

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

  1. {% extends 'home/base.html' %}
  2. {% block content %}
  3. <form action="{% url 'registration:register' %}" method="post">
  4. {% csrf_token %}
  5. {{ form.as_p }}
  6. {% load recaptcha from evileg_core %}
  7. {% recaptcha 'form-group' %}
  8. {% if messages %}
  9. {% for message in messages %}
  10. {{ message }}
  11. {% endfor %}
  12. {% endif %}
  13. <input type="submit" value="Register">
  14. </form>
  15. {% endblock %}

Результат

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

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

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

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

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

1

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

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
  • Останні коментарі
  • Evgenii Legotckoi
    16 квітня 2025 р. 17:08
    Благодарю за отзыв. И вам желаю всяческих успехов!
  • IscanderChe
    12 квітня 2025 р. 17:12
    Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
  • AK
    01 квітня 2025 р. 11:41
    Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
  • Evgenii Legotckoi
    09 березня 2025 р. 21:02
    К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
  • VP
    09 березня 2025 р. 16:14
    Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…