Как заставить работать Yandex SmartCaptcha в приложениях DJANGO?

Чтобы использовать Yandex SmartCaptcha в приложениях Django, вам нужно выполнить несколько шагов.

Шаг 1: Установка SmartCaptcha SDK
Сначала необходимо установить SmartCaptcha SDK, добавив следующую строку в ваш файл requirements.txt:

yandex-smartcaptcha-sdk==1.0.0

Затем вы можете установить SDK, выполнив команду:

pip install -r requirements.txt

Шаг 2: Получение API ключа
Для использования SmartCaptcha вам нужно получить API ключ. Для этого вам потребуется зарегистрироваться на странице SmartCaptcha (https://smartcaptcha.yandex.com/), создать проект и получить API ключ.

Шаг 3: Настройка Django проекта
Ниже приведены шаги по настройке Django проекта для использования SmartCaptcha.

3.1: Добавьте 'yandex_smartcaptcha' в список установленных приложений в вашем файле settings.py:

INSTALLED_APPS = [
  ...
  'yandex_smartcaptcha',
  ...
]

3.2: В вашем файле settings.py добавьте следующие строки:

# Ваш API ключ SmartCaptcha
SMARTCAPTCHA_API_KEY = 'your_api_key'

# Путь до папки для временной загрузки файлов
SMARTCAPTCHA_TMP_DIR = '/path/to/tmp/dir'

Замените 'your_api_key' на реальный API ключ, полученный на шаге 2. Укажите путь к директории, в которую будут сохраняться временные файлы, используемые SmartCaptcha.

3.3: В вашем файле urls.py добавьте следующие строки:

from django.urls import include, path

urlpatterns = [
  ...
    path('smartcaptcha/', include('yandex_smartcaptcha.urls')),
  ...
]

Шаг 4: Добавление SmartCaptcha формы в вашу HTML страницу
Теперь вам нужно добавить SmartCaptcha форму на вашу HTML страницу. Вам понадобится использовать шаблонный тег для отображения формы, а также добавить скрипт для обработки проверки капчи.

Пример:

<form action="{% url 'yandex_smartcaptcha_submit' %}" method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <input type="submit" value="Отправить">
</form>

{% load yandex_smartcaptcha %}
<script src="https://yandex.st/jquery/3.5.1/jquery.min.js"></script>
<script src="{% st_yandex_smartcaptcha_script %}"></script>

Обратите внимание, что вы должны использовать шаблонный тег {% st_yandex_smartcaptcha_script %} для добавления скрипта обработки капчи.

Шаг 5: Обработка данных формы в вашем Django представлении
Наконец, вам нужно обработать данные формы в вашем Django представлении. Чтобы выполнить проверку капчи, вы можете использовать следующий код:

from django.http import HttpResponse
from yandex_smartcaptcha.decorators import check_smartcaptcha

@check_smartcaptcha
def my_view(request):
  if request.method == 'POST':
    # код обработки данных формы
    return HttpResponse('Success')
  return render(request, 'my_template.html')

Добавьте декоратор @check_smartcaptcha перед вашим представлением, чтобы выполнить проверку капчи перед обработкой данных формы.

Это все необходимые шаги для использования Yandex SmartCaptcha в ваших приложениях Django. Теперь вы можете добавить защиту от спама и ботов с помощью SmartCaptcha.