Новое django приложение: django-captcha

Итак, второе приложение из серии приложений, который я решил заопенсорсить перед тем как приступить непосредственно к pybb. Django-captcha предоставляет поле, которые вы можете включить в свою форму и получить работающую каптчу!

Порядок установки:
* импортируйте и добавьте в вашу форму поле captcha.fields.CaptchaField
* добавьте новый middleware: captcha.threadlocals.ThreadLocalsMiddleware
* добавьте новый urlconf: captcha.urls

Всё. Теперь в форме появится каптча и если пользователь введёт неправильный ответ, то форма не провалидируется и сгенерируется новая каптча.

Код можно поглядеть/скачать здесь: http://hg.pydev.ru/django-captcha
Add post to:   Delicious Reddit Slashdot Digg Technorati Google
Make comment

Comments

Я конечно ламер, но блин не могу найти где там скачать можно? поглядеть - поглядел, а вот скачать не понял как...

Надо сделать клон репозитория: hg clone http://hg.pydev.ru/django-captcha

сенкс. разобрался.

Артур Хакимов 21.07.2008 14:17

Спасибо за приложение!

а можно пояснить по подробнее, как мне прикрутить это чудо к своему Джанго проекту?

за ранее, спасибо

Что именно непонятно? Я выше написал кратко как устанавливать.

если честно, то хотелось бы услышать вариант “для идиотов”, вот что я имел ввиду :)

что я сделал: прошел по ссылке выше, выкачал все вот это добро:

drwxr-xr-x [up]

drwxr-xr-x captcha/

-rw-r—r— 7 .hgignore

-rw-r—r— 41 AUTHORS.txt

-rw-r—r— 214 INSTALL.txt

-rw-r—r— 1484 LICENSE.txt

-rw-r—r— 298 README.txt

читаю Инстал.тхт :

1 Thanks for using this django application.

2

3 Installation instruction:

4 * copy “captcha” directory to your django project

5 * enable captcha.threadlocals.ThreadLocalsMiddleware

6 * include captcha.urls to main urls.py

строка 5, это как, не понятно …?

и по вашему описанию не понятно вот это: * импортируйте и добавьте в вашу форму поле captcha.fields.CaptchaField

если я не юзаю встроенный в джанге генератор форм и делаю их руками, как-то можно срастить этот модуль и мою форму?

Просьба не судить строго, я только начинаю заниматься Python’ом и Django’й :)

Я не знаю, почему вы не юзаете генератор форм (newforms) — это очень удобная библиотека. Рискну предположить, что вы просто не до конца поняли как её использовать или не знаете всех её фишек.

Как юзать капчу без newforms, мне, честно говоря, лень думать — дерзайте, изучайте исходники :-)

спасибо ) я тоже так думаю, что не до конца разобрался, и уже написал без этого … придеться переделывать, так как captcha нужна :)

действительно, исходники сильная вещь. Если их читать, много становиться понятнее :)

с этим “5 * enable captcha.threadlocals.ThreadLocalsMiddleware” разобрался.

код еще не адаптировал под django 1.0? Вижу в коде newforms as forms :-)

Чё-то всё руки не дойдут до django-captcha :-) Скоро поправлю, у меня как раз чё-то эта каптча не работает в новом проекте )

В случае, когда капча введена верно, а в других полях ошибка, было бы здорово убирать её из формы. Ну, не заставлять вводить повторно.

install.txt последней версии не полный, забыл о подключении приложения captcha и sync_db

пофиксил

Респект :)

Подскажи, как проще сделать, чтобы после регистрации сразу редиректил в аккаунт? Там по дефолту выводит сообщение о успешной регистрации.

Надо переопределить этот url pattern: url(r’^welcome/$’,direct_to_template{‘template’:’account/welcome.html’}, name=’registration_complete’),

Если ты подключил django-account через include(‘^foo/’, account.urls), то строчкой выше надо написать что-то типа:

url(r'^foo/welcome/$', ...),

Добавил: (r’^welcome/$’, redirect_to, {‘url’: ’/my/’}),

Работает, спасибо :)

Ещё заметил, что браузер кеширует страницы. Это критично. Например, логаут второй раз не работает. Показывает закешированную страницу, и не выходит на самом деле. Как правильно поступить?

Гм, ни разу с таким не сталкивался. Залил в репу обновление, теперь view логаута делает редирект на новую view, которая всего лишь показывает сообщение “вы разлогинились”. По идее, редирект не должен кешироваться.

Подсказали политкорректное решение:

from django.views.decorators.cache import never_cache

@never_cache
def my_view(request):
  .....

Required. 30 chars of fewer.

Required.

captcha image Please, enter symbols, which you see on the image