Configuration

Add base_accounts to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'base_accounts',
    ...
)

Add also to your urls.py:

url(r'^accounts/', include('accounts.auth_urls'))

User subclass

Class BaseUser, which subclasses django.contrib.auth.models.AbstractUser, is itself abstract. Therefore, you must subclass BaseUser from another class of yours. This allows you to add extra funtionality, include mixins, override methods, or any other stuff you need. For example, we usually create an accounts app inside our project, and from a models.py:

from django.db import models
from base_accounts.models import BaseUser

class User(BaseUser):
    pass

Do not forget to include your new app into your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'base_accounts',
    'accounts',
    ...
)

Now tell your project that this will be your auth model, and include the backend for authentication:

AUTH_USER_MODEL = 'accounts.User'
AUTHENTICATION_BACKENDS = (
    ...
    'accounts.auth_backend.EmailBackend',
    'django.contrib.auth.backends.ModelBackend',
)

Finally, you must sync your database with your new model. If you use south:

python manage.py schemamigration accounts --initial
python manage.py migrate accounts

Optional settings

BASE_ACCOUNTS_SIGNUP_REDIRECT_URL

  • default: settings.LOGIN_REDIRECT_URL (if not set, ‘/accounts/profile/’ in Django by default)

BASE_ACCOUNTS_LOGIN_REDIRECT_URL

  • default: settings.LOGIN_REDIRECT_URL (if not set, ‘/accounts/profile/’ in Django by default)

BASE_ACCOUNTS_POST_LOGIN_REDIRECT_URL

  • default: settings.LOGIN_REDIRECT_URL (if not set, ‘/accounts/profile/’ in Django by default)

BASE_ACCOUNTS_LOGOUT_REDIRECT_URL

  • default: settings.LOGOUT_URL (if not set, ‘/accounts/logout/’ in Django by default)

BASE_ACCOUNTS_UPDATE_EMAIL_REDIRECT_URL

  • default: Reverse of settings_update_email view

BASE_ACCOUNTS_UPDATE_EMAIL_ERROR_REDIRECT_URL

  • default: Reverse of settings_update_email view

BASE_ACCOUNTS_UPDATE_PASSWORD_REDIRECT_URL

  • default: Reverse of settings_update_password view

BASE_ACCOUNTS_UPDATE_PASSWORD_ERROR_REDIRECT_URL

  • default: Reverse of settings_update_password view

BASE_ACCOUNTS_CONFIRM_EMAIL_REDIRECT_URL

  • default: ‘/’