EVILEG-CORE. Using Google reCAPTCHA

Google, reCAPTCHA, EVILEG, CORE, ESNF-C

This will be the first article on the use of a set of established utilities that are present in the core of the EVILEG site. This part of the site’s program code is in open source, so I want to talk about what functionality is present in this battery and how to use it.

I'll start by using Google reCAPTCHA , and what is required to quickly implement this functionality.

Register reCAPTCHA

The first step is to register the site in the admin reCAPTCHA .

An example of registering a site on Google reCAPTCHA

Implementation

Adding Google reCAPTCHA will consist of two steps:

  1. Implementing reCAPTCHA on the client side, i.e. in HTML code
  2. Внедрение reCAPTCHA на серверной стороне

When registering a site, two keys will be generated:

  1. Site key - The key to be placed on the HTML page
  2. Secret key - The key that will be used to communicate the site and the Google service reCAPTCHA

The implementation process will be as follows. On the HTML page in a form that requires validation of user actions, place the reCAPTCHA script and the site key.

On the server side, we add a decorator to the request method for Class Based View.

Install EVILEG-CORE

pip install evileg-core

Also evileg_core will pull up all the dependencies necessary for this package. Including the requests library, which is used to execute the captcha verification request.

settings.py

Add evileg_core to installed applications

INSTALLED_APPS = [
    ...
    'evileg_core',
]

We also add reCAPTCHA Secret Key and Site Key.

GOOGLE_RECAPTCHA_SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
GOOGLE_RECAPTCHA_SITE_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

urls.py

We wrap the necessary view with the decorator

# -*- 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

And in the view itself, we check the validity of reCAPTCHA. In my case, this was a view inherited from the FormView class.

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

    def form_valid(self, form):
        # reCAPTCHA validation check
        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())

Client side

On the client side, you need to add the script connection code, the location of the captcha, as well as the output of error messages.

{% 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 %}

Result

As a result, we get a fairly simple implementation of reCAPTCHA on the Django site.

Google reCaptcha example on EVILEG-CORE

For Django I recommend Timeweb Hosting VDS Server .

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
- company blog
Support the author Donate

Comments

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

Hello, Dear Users of EVILEG!!!

If the site helped you, then support the development of the site financially, please.

You can do it by following ways:

Thank you, Evgenii Legotckoi

Nov. 8, 2019, 7:59 a.m.
Pavel.K

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:60points,
  • Rating points-1
RF
Nov. 7, 2019, 12:51 p.m.
Roman Figura

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

  • Result:50points,
  • Rating points-4
RF
Nov. 7, 2019, 12:44 p.m.
Roman Figura

C++ - Test 002. Constants

  • Result:25points,
  • Rating points-10
Last comments
b
Nov. 9, 2019, 7:28 a.m.
bastonc

спасибо ещё раз. огромное, за уделённое время
b
Nov. 9, 2019, 7:24 a.m.
bastonc

Спасибо Вам большое. Буду изучать.
Nov. 9, 2019, 4:58 a.m.
Evgenij Legotskoj

Добрый день. По первым двум вопросам вы найдёте ответ в этой статье - PyQt5 - Урок 008. Работа с QTableWidget (Обновление урока 006) Что касается последнего вопроса, то я вам…
Nov. 9, 2019, 1:50 a.m.
Evgenij Legotskoj

Как и обещал, вы можете посмотреть новую статью QML - Урок 037. Кастомизация кнопок в QML (Обновление урока 002) . Там же найдёте ссылку на Git репозиторий. Не забудьте поставить звёз…
b
Nov. 8, 2019, 6:40 a.m.
bastonc

Приветствую. Подскажите пожалуйста пару моментов. 1. Как сделать столбец не редактируемый, а остальные ячейки остаются редактируемыми 2. Как оталвливать события двойного клика для реда…
Now discuss on the forum
AV
Nov. 11, 2019, 10:15 p.m.
Alexey Vasin

сейчас компа под рукой нет, так ты найдешь входит ли оди вектор в другой C++Выделит#include <algorithm>#include <iostream>#include <vector>using namespace std;int m…
r
Nov. 11, 2019, 4:57 a.m.
rbw123

buttonText скорее всего не видит потому, что он находится внутри ButtonStyle. А как тогда обращаться к свойствам?
Nov. 10, 2019, 5:53 a.m.
Evgenij Legotskoj

Я имел ввиду дополнительные параметры сортировки, кроме тех, что уже присутствуют в расширенном поиске.
c
Nov. 8, 2019, 10:06 a.m.
cappelikan

возникла задача реализовать парсинг html библиотекой htmlcxx и вывода href ссылок ввиде списка с помощью qlistview как это грамотно сделать ? спасибо
L
Nov. 7, 2019, 3:08 p.m.
LastLeaf

Спасибо, все получилось! Дай бог тебе здоровья!
EVILEG
About
Services
© EVILEG 2015-2019
Recommend hosting TIMEWEB