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

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

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

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

ДК
16 января 2020 г. 3:19
Дмитрий Корягин

C++ - Тест 001. Первая программа и типы данных

  • Результат:73баллов,
  • Очки рейтинга1
ЛЗ
16 января 2020 г. 3:03
Лилия Зиганурова

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

  • Результат:50баллов,
  • Очки рейтинга-4
p
13 января 2020 г. 16:59
popkadurak

C++ - Тест 002. Константы

  • Результат:100баллов,
  • Очки рейтинга10
Последние комментарии
17 января 2020 г. 2:31
Андрей Янкович

Выглядит как ошибка библиотеки. Расскажите подробно на какой платформе вы собираете проект (MinGW или MSVC) их версии и версии Qt.
D
16 января 2020 г. 12:06
DENIZ1819

Доброго времени суток, не подскажите, что делать в данной ситуации, после того, как я сделал все вышеуказанные инструкции для подключения библиотеки к проекту?
14 января 2020 г. 5:33
Евгений Легоцкой

Рекомендую Wt, достаточно мощная вещь. Этот фреймворк может использоваться для написания сайтов на C++, либо можно использовать только отдельный компоненты, например только ORM. Но я не знаю, ка…
a
14 января 2020 г. 5:29
ayb

Спасибо за инфу. Поиск качественной ORM привел меня только к sqlite_orm, но не подходит из-за необходимости полноценной поддержки c++14. Про framework Wt не слышал, спасибо за наводку.
14 января 2020 г. 2:50
Евгений Легоцкой

Вы заблуждаетесь. Любая нормальная ORM позволяет выполнение сырых SQL запросов. А если хорошо разобраться в работе моделей данных в Qt, то не составит труда использовать ORM вместе с Qt, ту же с…
Сейчас обсуждают на форуме
VZ
18 января 2020 г. 7:25
Vladimir Zhitkovsky

В приложении есть страницы с контролами. в с++ я заполняю структуры ассоциированные с контролами в qml. затем генерю сигнал о том, что все данные готовы и в qml по этому сигналу заполняю контрол…
18 января 2020 г. 7:12
Ruslan Polupan

Строку host разкоментировать и указать адрес сервера [listener];host=192.168.0.100port=8080minThreads=4maxThreads=100cleanupInterval=60000readTimeout=60000maxRequestSize=16000maxMulti…
17 января 2020 г. 2:20
Intruder

Александр, доброго дня! Я тоже только учусь и поэтому мой код может быть не совершенен. За отклик большое спасибо.
L
16 января 2020 г. 20:14
LesLype

Oct Products Similiar To Lasix Kamagra Now.Co.Uk Sky Pharmacy Canada [url=http://cialibuy.com]Buy Cialis[/url] Viagra Ricetta Ripetibile
16 января 2020 г. 18:05
Алексей Внуков

в лоадер вроде как нельзя передать значение при загрузке, я не нашел такой возможности, через стек без проблем. если использую лоадер - я передаю в С++ нужные параметры, а потом при загрузке стр…
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB