Для задачи, которую на досуге пописываю, понадобилось мне изобразить wizard, причём на последней странице нужна капча против ботов.
Для капчи я решил использовать supercaptcha. В принципе это не единственное решение, скажем, я писал уже о Django Simple Captcha, но суперкапча мне как-то больше приглянулась.
Что касается wizard'а, то в django.contrib есть класс FormWizard, предназначенный как раз для этого.
И вроде всё хорошо, но обнаружился ньюанс - на самом последнем шаге FormWizard валидирует заново все данные, которые ввёл пользователь. Для обычных полей проблем никаких не возникает (разве что чуть больше времени тратится), а с капчей такой фокус не пройдёт, т.к. валидация у неё "одноразовая". Править капчу, на мой взгляд, в данном случае неправильно, поэтому пришлось внести изменения в FormWizard, о которых я написал ticket 10810 в Trac Django. По сути дела там реализован "хак", т.к. просто последняя форма не ревалидируется заново. Как решить задачу чтобы "и волки сыты, и овцы целы" я так пока и не придумал. Но текущее решение вполне работоспособное, поэтому пока остановлюсь на неём.
Показаны сообщения с ярлыком captcha. Показать все сообщения
Показаны сообщения с ярлыком captcha. Показать все сообщения
среда, 22 апреля 2009 г.
пятница, 27 марта 2009 г.
Простота - залог успеха
Всё-таки очень подкупает в Django его компонентность и слабосвязанность различных частей. К примеру в том примерчике, что сейчас пытаюсь сделать, понадобилась мне капча. Стандартной нет с фреймворком, но на сайте нашёл ссылку на Django Simple Captcha (кстати, на Google Code довольно много проектов для Django), решил попробовать:
В общем - переиспользование рулит не по-детски ибо это сила!
- сделал этому проекту svn co ;
- добавил ссылку к python path;
- добавил CaptchaField в мою модель;
- добавил соответствующий url;
- и всё заработало :)
В общем - переиспользование рулит не по-детски ибо это сила!
Подписаться на:
Сообщения (Atom)
