Как подключить Yandex Smart Captcha на сайт Django?

Для подключения Yandex Smart Captcha на сайт Django вам потребуется выполнить несколько шагов:

1. Зарегистрироваться на сайте Яндекс.Капча (https://captcha.yandex.ru) и создать новый проект.

2. Установить пакет django-recaptcha в вашем виртуальном окружении Django. Выполните команду pip install django-recaptcha.

3. Добавьте 'captcha' в список INSTALLED_APPS в файле настроек settings.py вашего проекта Django:

INSTALLED_APPS = [
    ...
    'captcha',
    ...
]

4. Зарегистрируйте новые ключи для Yandex Captcha в файле настроек settings.py:

RECAPTCHA_PUBLIC_KEY = 'ваш_публичный_ключ'
RECAPTCHA_PRIVATE_KEY = 'ваш_секретный_ключ'

5. Добавьте специальные теги шаблонов в форму, на которой вы хотите использовать Yandex Smart Captcha. Например:

<form method="post" action="#">
    {% csrf_token %}
    {% captcha %}

    <button type="submit">Отправить</button>
</form>

6. В вашем представлении (view) проверьте, что введенная пользователем капча прошла проверку:

from django.shortcuts import render
from django.http import HttpResponseRedirect
from django.contrib import messages
from captcha.fields import ReCaptchaField

def my_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            # Проверка прошла успешно
            return HttpResponseRedirect('/success/')
    else:
        form = MyForm()
    
    return render(request, 'my_template.html', {'form': form})

Обратите внимание, что MyForm - это класс формы Django, который содержит поле для капчи:

from captcha.fields import ReCaptchaField
from django import forms

class MyForm(forms.Form):
    captcha = ReCaptchaField(
        label='',
        widget=ReCaptchaWidget(attrs={'theme': 'white'}),
    )

Вы можете настроить различные параметры виджета капчи, используя атрибуты в конструкторе ReCaptchaWidget.

После выполнения всех этих шагов Yandex Smart Captcha будет успешно подключена на вашем сайте Django.