The 0.8 release of django-registration represents a complete rewrite of the previous codebase, and as such introduces a number of new features and greatly enhances the flexibility and customizability of django-registration. This document summarizes those features; for a list of changes which impact existing installations, consult the upgrade guide.
The backend system¶
The largest overall change consists of factoring out the logic of user
registration into pluggable/swappable backend classes. The
registration views now accept a (required) argument,
backend, which indicates the backend class to use, and that class
has full control over the registration (and, if needed, activation)
- Determining whether registration will be allowed at all, on a per-request basis.
- Specifying a form class to use for account registration.
- Implementing the actual process of account creation.
- Determining whether a separate activation step is needed, and if so what it will entail.
- Specifying actions to take (e.g., redirects, automatic login, etc.) following successful registration or activation.
For full details, see the documentation for the backend API.
The workflow used by previous releases of django-registration (two-step registration/activation) has been implemented using this system, and is shipped as the default backend in django-registration 0.8.
Other new features¶
An alternate one-step registration system is provided, for use by sites which do not require a two-step registration/activation system.
During the registration and (optional) activation process, custom signals are now sent, allowing easy injection of custom processing into the registration workflow without needing to write a full backend.
The default backend now supplies several custom admin actions to make the process of administering a site with django-registration simpler.
activate() view now supplies any
captured keyword arguments from the URL (in the case of the default
backend, this is the activation key) to its template in case of
unsuccessful activation; this greatly simplifies the process of
determining why activation failed and displaying appropriate error