Django прилжение для регистрации
Последние несколько недель я раздумывал над тем, не продолжить ли мне работу над pybb, разработку которого я заморозил в декабре 2007 года. Думаю, всё же стоит довести этот проект до ума. Однако, за время прошедшее с начала года, я приобрёл новый опыт и поменял точку зрения на некоторые вещи, так что pybb я буду переписывать чуть ли не с нуля.
В этом подходе я изначально буду придерживаться нескольких вполне конкретных вещей:
* возможность *легко* встроить pybb в сторонний рабочий проект
* тредовость обсуждений: близкие примеры это google groups, livejournal. Тредовость данных скорее всего будет организована c помощью механизма nested sets, и поможет мне в этом django-mptt
* плагинная система: я надеюсь мы что-нибудь придумаем с dottedmag'ом т.к. он перидически грозится написать плагинную систему для byteflow. Думаю, на pybb её переложить будет нетрудно.
* качественная поддержка OpenID
В целях улучшения встраиваемости в сторонний проект модуль регистрации/авторизации/редактирования базовых свойств аккаунта я вынесу в отдельное приложение, чтобы при желании можно было использовать тот модуль, что уже существует в работающем сайте. Собственно, поводом к написанию этого сообщения стало то, что я вырефакторил из своего кода отдельное приложение для регистрации и выложил его в opensource. Итак, встречайте django-account. Это приложение предоставляет: регистрацию, авторизацию, активацию по email, напоминание пароля, изменение пароля.
Документации к django-account пока нет. Читайте INSTALL.txt, README.txt и докстринги в коде :-). Попозже я создам trac-проект, где всё опишу. Далее на очереди на выкладывание в opensource модули для каптчи и для OpenID-авторизации. Да, я знаю, что все три вышеназванных модуля - это велосипеды, у которых уже есть аналог и не один. Но, сами знаете, своя рубашка ближе к телу. Кроме того, как всегда, меня не устроил код и идеи в чужих приложениях, так что я изобрёл в очередной раз колесо :-)
В этом подходе я изначально буду придерживаться нескольких вполне конкретных вещей:
* возможность *легко* встроить pybb в сторонний рабочий проект
* тредовость обсуждений: близкие примеры это google groups, livejournal. Тредовость данных скорее всего будет организована c помощью механизма nested sets, и поможет мне в этом django-mptt
* плагинная система: я надеюсь мы что-нибудь придумаем с dottedmag'ом т.к. он перидически грозится написать плагинную систему для byteflow. Думаю, на pybb её переложить будет нетрудно.
* качественная поддержка OpenID
В целях улучшения встраиваемости в сторонний проект модуль регистрации/авторизации/редактирования базовых свойств аккаунта я вынесу в отдельное приложение, чтобы при желании можно было использовать тот модуль, что уже существует в работающем сайте. Собственно, поводом к написанию этого сообщения стало то, что я вырефакторил из своего кода отдельное приложение для регистрации и выложил его в opensource. Итак, встречайте django-account. Это приложение предоставляет: регистрацию, авторизацию, активацию по email, напоминание пароля, изменение пароля.
Документации к django-account пока нет. Читайте INSTALL.txt, README.txt и докстринги в коде :-). Попозже я создам trac-проект, где всё опишу. Далее на очереди на выкладывание в opensource модули для каптчи и для OpenID-авторизации. Да, я знаю, что все три вышеназванных модуля - это велосипеды, у которых уже есть аналог и не один. Но, сами знаете, своя рубашка ближе к телу. Кроме того, как всегда, меня не устроил код и идеи в чужих приложениях, так что я изобрёл в очередной раз колесо :-)






Comments
убивцу django-registration ваяешь?) ждём более ракрытое описание возможностей)
А нужна ли для Джанго-приложения плагинная система? Ведь любое приложение в Джанго -- по сути тот же плагин, имеет доступ ко всей системе. Вот что нужно, по-моему, так это достаточное количество рассылаемых сигналов из приложения, чтобы за них можно было цепляться. Впрочем, я про это уже писал :-)
Не могу ничего сейчас сказать по этому поводу т.к. основательно ещё не думал :-(
Иван, ты byteflow видел? вот там плагинная система уже давно нужна. Если же к форуму пользователи будут писать расширения, там тоже нужна будет плагинная система. сигналы тоже нужны. но это ведь только часть плагинной архитектуры.
а если в двух словах -- не monkeypatching'ом и правкой сорцов же расширять форум!
Пока не видел :-). Поэтому не очень представляю, что нужно от плагина такого, чего нельзя оформить просто в приложение. Можешь пример какой-нибудь наглядный привести?
Та конечно нужно, не заморачивайтесь)
Этот коммент смахивает на пост ради ссылки на сателлит :-/
Ага, задолбали уже спамеры! Сам борюсь с ними на своем блоге. Ужас...
Надеюсь, вы не спамер? Не бойтесь признаться, я ссылку не буду удалять :o)
nofollow добавь, сразу говна подобного поубавится)
Лориен, ну конечно же я спамер, при чем самый вылитый, ну и скажете же )))
Ошибка в заголовке :)”прилжение”=”приложение”
Заюзал, удобненько :) А как отключить мыльную активацию? И ещё вариант без логина (мыло вместо логина) часто полезен.
Там можно отключить активацию по мылу, читайте в README.txt: http://hg.pydev.ru/django-account/file/cf9cc17ed153/README.txt
Вторая фича пока не реализована.
О, респектище :)
Там, кстати в Джанге 1.0 вываливается: cannot import name newforms Exception Location: …/captcha/fields.py in [HTML_REMOVED], line 4
Ну и сама капча чисто символическая, очень легко пишется распознавалка :)
Тут можно глянуть алгоритмы отрисовки и настройки полезные. Ограничение набора символов, только цифры к примеру и т.п. http://www.captcha.ru/kcaptcha/
up: и ещё было бы здорово дать возможность редиректить на нужную пагу, вместо отображения welcome.html. В случае отключения мыльной активации эта страничка не особо нужна. Достаточно, наверное, просто флага: отображать/нет велкам-страничку. Если нет — редирект как при входе.
Так что с этим делать? cannot import name newforms Exception
Присоеденяюсь, что с этим делать ? :)
В месте импорта переименуйте newforms в forms
PS У меня в фаерфоксе 3.0.5 под убунтой 8.10 вёрстка под формой комментария поехала.
Возьмите свежую версию django-account или django-captcha, если вы про них говорите.
Вылез баг при восстановлении пароля.
В письме приходит: You have requested password restore on site.ru. After visiting the http://site.ru/change_password/?authkey=dXNlcm5hbWU9SHVzbnVkJmZyZleHBpcmVkPTE2LTAxLTA5LTE2LTQ2LTI2Jl9oYXNoPTlmZmRlNzY4NGFmMGI4MzU0MWU1OTJlOTZiYzdjMWJmYTVmZmNiZDU=, the new password will be set for your account. New password: Bz4G8Mug
В urls.py:
In views.py:
Если убрать @login_required, вылазит:
Если будешь фиксить, расставь, пожалуйста, заодно @never_cache везде :)