Django simple captcha

категория: Django
Если посмотреть на форму обратной связи - то видно, что чего не хватает, мне кажется, не хватает именно защиты от спам ботов. Я сначала думал сделать что-то в виде "2+5", а потом еще сделать пару комбинаций и рендерить их по рандуму, но понял что лучше будет просто приклеить "капчу". И в этом мне поможет - "django-simple-captcha" (https://github.com/mbi/django-simple-captcha). Итак установка: 1. Качаем django-simple-captcha через pip:
pip install django-simple-captcha
2. Копируем из архива папку captcha в корень нашего проекта. 3. Добавляем "captcha" в INSTALLED_APPS в свой settings.py. 4. Добавляем в свой urls.py:
urlpatterns += patterns('',
    url(r'^captcha/', include('captcha.urls')),
)
5. Далее в models.py:
from captcha.fields import CaptchaField
В class ContactForm(ModelForm) вставляем:
captcha = CaptchaField()
6. Запускаем миграцию базы данных:
python manage.py migrate captcha
И все вроде должно работать, но у меня, почему-то, редко так получается)). У меня в шаблоне просто выводится текстовое поле, а самой картинки нет вообще. Устанавливаем PIL(Python Imaging Library):
sudo pip install PIL
Опять ошибка: The _imagingft C module is not installed. Как оказалось, что установленный PIL был составлен без либы libfreetype. Устанавливаем libfreetype:
sudo -s 
aptitude install libfreetype6-dev 
pip install --upgrade pil
И наконец-то можно насладиться результатом) и можем поиграться с настройками, выводимой в форме, картинки, у меня, например, так:
CAPTCHA_BACKGROUND_COLOR = 'white'
CAPTCHA_FOREGROUND_COLOR = '#000'
CAPTCHA_OUTPUT_FORMAT = u' %(hidden_field)s %(text_field)s %(image)s'


blog comments powered by Disqus