Skip to main content

DjaoDjin's Implementation of Frictionless Sign Up

Project description

This code a frictionless signup Django app.

The app will register and login a user with as little as only an email address.

When the user logs out and tries to logs back in with the same email address, the app will first verify the email address through an activation url send to the registered email address. Setting the password is deferred to after the email address has been verified.

If during the first login and/or subsequent login, the email address should be verified before moving forward (ex: before presenting a payment view), you should decorate the view with an active_required decorator.

Tested with

  • Python: 2.7, Django: 1.11, Django Rest Framework: 3.9.4
  • Python: 3.6, Django: 2.2 ([LTS](, Django Rest Framework: 3.11
  • Python: 3.6, Django: 3.0 (latest), Django Rest Framework: 3.11

This project contains bare bone templates which are compatible with Django and Jinja2 template engines. To see djaodjin-signup in action as part of a full-fledged subscription-based session proxy, take a look at [djaoapp](


Add the signup urls to your urlpatterns and EmailOrUsernameModelBackend to the settings AUTHENTICATION_BACKENDS.

urlpatterns = (‘’,
(r’^api/’, include(‘signup.urls.api’)), (r’^’, include(‘signup.urls.views’)),


‘signup.backends.auth.EmailOrUsernameModelBackend’, ‘django.contrib.auth.backends.ModelBackend’


To make the application useable accross a variety of websites, signup never sends any e-mails directly. It relies on triggering signals whenever a notification must be generated. As a result, to verify a user email address and activate her account, you will need to implement a listener for the user_verification signal and send the e-mail from there.


After cloning the repository, create a virtualenv environment, install the prerequisites, create and load initial data into the database, then run the testsite webapp.

$ python -m venv .venv $ source .venv/bin/activate $ pip install -r testsite/requirements.txt $ python syncdb $ python loaddata testsite/fixtures/default-db.json $ python runserver

# Browse http://localhost:8000/

Release Notes


  • introduces compatibility with Django3
  • extends Vue with configuration constants

[previous release notes](changelog)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for djaodjin-signup, version 0.4.6
Filename, size File type Python version Upload date Hashes
Filename, size djaodjin-signup-0.4.6.tar.gz (63.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page