В последнее время в разрабатываемых приложениях использую только авторизацию по 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. Примеры шаблонов можно посмотреть в исходниках.