Как установить Google captcha на сайт?

    blazer |   28.02.2017 |   10:13:33 |   Django |

гугл рекаптчаВ этой статье я расскажу, как установить и настроить на своем сайте каптчу от Google. Для чего это нужно? Ну как правило это защита от спама в моем случае блог атаковали боты регистрировались автоматически и спамили в комментарии всякий бред на другие сайты.

Меня это все стало выводить из себя и в один прекрасный день решил, что с этим нужно что-то делать.

Решение было найдено быстро, посколько сайт написан на django, то для этих целей есть специальная батарейка которая называется Google Recaptcha вот ее и будем сейчас внедрять на сайт.

 

Первым делом нам нужно пройти на сайт Google recaptcha и зарегистрироваться там, процесс регистрации обычный и не требует подробного описания. После регистрации мы попадаем в свой кабинет, где нужно добавить свой сайт на который хотим установить каптчу.

После добавления сайта вы получаете ключи которые в дальнейшем нужно будет установить на сайт.

Далее переходим по этой ссылке и устанавливаем саму каптчу согласно инструкции в описании.

Я устанавливал в программе Pycharm

Открываем файл Settings.py и добавляем следующие настройки:

INSTALLED_APPS += ('g_recaptcha')

Тут указываем свой публичный и секретные ключи которые вы получили на сайте Google recaptcha.

GOOGLE_RECAPTCHA_SITE_KEY = 'key_obtained_from_google' Публичный ключ
GOOGLE_RECAPTCHA_SECRET_KEY = 'key_obtained_from_google' Секретный ключ

В файле views.py своего приложения нужно в контекст добавить публичный ключ и сделать импорты как показано ниже.

from django.conf import settings
from g_recaptcha.validate_recaptcha import validate_captcha
'GOOGLE_RECAPTCHA_SITE_KEY': settings.GOOGLE_RECAPTCHA_SITE_KEY,

В шаблон выводим публичный ключ т.е. саму каптчу, ставим этот код там где вы хотите вывести каптчу. В моем случае я поставил каптчу в шаблоне авторизации перед кнопкой "Войти", в шаблоне регистрации перед кнопкой "Регистрация" и в шаблоне полной новости в комментраиях перед кнопкой "Добавить комментарий"

<div class="g-recaptcha" data-sitekey="{{ GOOGLE_RECAPTCHA_SITE_KEY }}"></div>

И последнее действие в файле views.py над вашей функцией в которой вы выводите в контексте публичный ключ каптчи нужно установить декоратор

@validate_captcha
def view(request):

Все таким образом мы получаем установленную и настроеную гугл каптчу на своем сайте!

Возможные проблемы с выводом капчи.
Недавно устанавливал капчу на сайте клиента и там была проблема из-за которой капча не выводилась в шаблон. Суть проблемы заключалась в том, что на сайте было два приложения, по этому капчу нужно добавлять в views.py того приложения которое рендириться в ваш главный шаблон, в моем случае это был index.html

Ваши комментарии

Комментарии могут оставлять только зарегистрированые пользователи!

Disqus - комментарии

blog comments powered by Disqus