Project Rationale
While working together in late 2016, Russell Keith-Magee and Andrew Pinkham— original authors of the project—discussed the repetitive nature of rebuilding a best-practices email-based User model in new Django projects. The two were tired of redoing the same work, and decided to open-source code based on what they’d learned previously.
Russell’s Red User, Blue User, MyUser, auth.User talk from DjangoCon US 2013 and PyCon AU 2017 (video below) provides a breakdown of the problems with Django’s existing approach to identity-handling, as well as an introduction to using custom User models in Django.
In turn, Andrew wished for more modularity in Django’s existing auth
codebase. Having described the process of creating custom User models in
his book, Django Unleashed, Andrew felt that developers should be
able to import and compose classes to properly integrate with Django’s
permissions and/or admin. The two set out to build a project that would:
provide a User model that authenticates via email (not username)
provide a User model with global identity name-fields (full name and short name, rather than the limited anglo-centric first and last name)
provide mix-in classes to allow developers to easily compose a new User model.
The project is originally based on the app that Russell had built over a
decade of working in Django. Andrew took what he had learned from
Django Unleashed and his consulting experience, and integrated it
into the project. The result is a User
model that can be used out of the box (see Quickstart: Using Improved User for
details) and a set of mix-in classes to
allow for creation of new User models (notably, the
DjangoIntegrationMixin
).
We hope you find our work useful!