В последнее время в разрабатываемых приложениях использую только авторизацию по email. Это упрощает регистрационную форму, да и вообще, как мне кажется, удобнее для пользователя - ему не нужно придумывать уникальный логин, у него уже есть уникальный email. К тому же я не люблю активацию акаунта через почту, в большинстве случаев без неё можно прекрасно обходиться.
Для того, чтобы не копировать одно и то же в разных проектах, оформил всё, что нужно в отдельное приложение и залил на github - django-simplereg.
Простая установка в три шага. Первый - устанавливаем само приложение.
pip install -e git://github.com/Bers/django-simplereg.git#egg=simplereg
Добавьте simplereg в INSTALLED_APPS. Для авторизации по email надо добавить backend в settings.py, если оставить 'django.contrib.auth.backends.ModelBackend', то авторизация по юзернейму тоже будет работать.
AUTHENTICATION_BACKENDS = (
'simplereg.backend.EmailAuthBackEnd',
'django.contrib.auth.backends.ModelBackend',
)
Правим urls.py. Выглядеть должен как-то так:
from django.conf.urls.defaults import *
from simplereg.forms import LoginForm
urlpatterns = patterns('',
url(r'^registration/$', 'simplereg.views.registration', {
'template_name': 'registration.html',
'autologin': True,
'callback': None
}, name='registration'),
url(r'^login/$', 'django.contrib.auth.views.login', {
'authentication_form': LoginForm
}, name='login'),
...
)
После регистрации пользователь будет сразу авторизован, если вам не нравится такой подход измените значение autologin на False. URL после регистрации/авторизации указывается в шаблоне полем next. Примеры шаблонов можно посмотреть в исходниках.