Evgenii Legotckoi
Evgenii Legotckoi27 жовтня 2019 р. 04: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 .

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

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

Коментарі

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

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 01:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Evgenii Legotckoi
Evgenii Legotckoi24 червня 2024 р. 15:11
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey115 листопада 2024 р. 06:04
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProject04 червня 2022 р. 03:49
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Слідкуйте за нами в соціальних мережах