Evgenii Legotckoi
Қаз. 27, 2019, 2:56 Т.Қ.

ЖАМАНДЫҚ ЯРЕК. Google reCAPTCHA пайдалану

Это будет первая статья об использовании набора установленных утилит, присутствующих в ядре сайта EVILEG. Эта часть программного кода сайта находится в открытом доступе, поэтому я хочу рассказать о том, какой функционал присутствует в этой батарее и как ею пользоваться.

Я начну с использования Google reCAPTCHA и того, что требуется для быстрой реализации этой функции.


Зарегистрируйте reCAPTCHA

Первым шагом является регистрация сайта в admin reCAPTCHA .

An example of registering a site on Google reCAPTCHA

Реализация

Добавление Google reCAPTCHA будет состоять из двух шагов:

  1. Реализация reCAPTCHA на стороне клиента, т.е. в HTML-коде
  2. Внедрение reCAPTCHA на серверной стороне

При регистрации сайта будет сгенерировано два ключа:

  1. Ключ сайта — ключ, который будет размещен на HTML-странице.
  2. Секретный ключ — ключ, который будет использоваться для связи сайта и сервиса Google reCAPTCHA.

Процесс реализации будет следующим. На HTML-странице в форме, требующей проверки действий пользователя, разместите скрипт reCAPTCHA и ключ сайта.

На стороне сервера мы добавляем декоратор в метод запроса для представления на основе классов.

Установить EVILEG-CORE

  1. pip install evileg-core

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

settings.py

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

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

Мы также добавляем секретный ключ reCAPTCHA и ключ сайта.

  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 validation check
  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 example on EVILEG-CORE

Для Django я рекомендую Timeweb Hosting VDS Server .

Осы тақырып бойынша ұсынылатын мақалалар

Мақала бойынша сұралады0сұрақтар(лар)

1

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз