EVILEG-CORE. Использование Google reCAPTCHA

Google, reCAPTCHA, EVILEG, CORE, ESNF-C

Содержание

Это будет первая статья по использованию набора устоявшихся утилит, которые присутствуют в ядре сайта 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

Устанавливаем EVILEG-CORE.

pip install evileg-core

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

settings.py

Добавляем evileg_core в установленные приложения

INSTALLED_APPS = [
    ...
    'evileg_core',
]

А также доbавляем 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 хостинг.
- блог компании
Поддержать автора Donate

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Donate

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

A
29 марта 2020 г. 12:14
Alexanderv66

C++ - Тест 003. Условия и циклы

  • Результат:71баллов,
  • Очки рейтинга1
A
29 марта 2020 г. 12:05
Alexanderv66

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

  • Результат:80баллов,
  • Очки рейтинга4
DE
28 марта 2020 г. 15:13
Denis Erokhin

C++ - Тест 005. Структуры и Классы

  • Результат:100баллов,
  • Очки рейтинга10
Последние комментарии
27 марта 2020 г. 14:40
Евгений Легоцкой

Добрый день. В конце пятой статьи скачать можете.
27 марта 2020 г. 14:28
mkdir _

Здравствуйте, а можно, пожалуйста, ссылку на целые исходники, если есть?
27 марта 2020 г. 4:36
Евгений Легоцкой

Скорее всего также, как и для установки всех остальных переменых в CMake, через использование set
27 марта 2020 г. 2:47
Андрей Янкович

Ошибка с ярлыками в Windows исправлена в версиии 1.4.0.4
Сейчас обсуждают на форуме
30 марта 2020 г. 4:16
Евгений Легоцкой

Попробуйте запустить через плейлист, а не через setMedia. Пример есть в этой статье
30 марта 2020 г. 3:25
Евгений Легоцкой

Добрый день. Почитайте документацию, в исходниках этой библиотеки есть исходнные классы логгеров. Вам наверняка достаточно только правильно вызвать пару функций, чтобы задать имя файла…
30 марта 2020 г. 3:17
Евгений Легоцкой

Нет, не нужно ничего умножать, если у вас включена поддержа High DPI в приложении а QML, то достаточно держать в памяти, что все значения задаются в DPI, и просто задаёте значения равные DPI сра…
27 марта 2020 г. 10:00
Михаиллл

Оказывается нужно сделать столбец уникальным ALTER TABLE public.drivers ADD UNIQUE (agregator1_id); Потом так работает INSERT INTO drivers( name_driver, surname, middle_name, agr…
s
27 марта 2020 г. 8:25
shuric

Спасибо за ответы. Скорее всего оставлю на неопределенное время под macOS. Хоть будет полезно другим начинающим разработчикам.
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB