DEV Community


Django Authentication – How to build Login/Logout/Signup for custom User

loizenai profile image loizenai ・3 min read

Django Authentication – How to build Login/Logout/Signup for custom User

Building user authentication is not easy, in almost case, it's complicated. Fortunately, Django has a powerful built-in User authentication that helps us create our Authentication system fast. By default, the User model in Django auth app contains fields: username, password, email, first_name, last_name... However, using our own custom user model allows us deal with user profile more comfortably. For example, what if we want to add more fields: full_name or age?

In this tutorial, we're gonna look at way to customize authentication in Django (version 2.1) using subclass of AbstractBaseUser: AbstractUser. All User authentication data will be stored in MySQL/PostgreSQL database that we'll show you how to config the datasource.

It will be very interesting. Let's go through the steps.

Django Custom Authentication Project overview


We will build a Dajngo Project with Authentication app that has login/logout/signup with custom fields such as full name and age:


We will code our custom signup() function, login() and logout() is automatically implemented by Django auth.

All User data will be saved in MySQL/PostgreSQL database.

Project Structure

Here is the folders and files structure that we will create in the next steps.


Setup Django Custom Authentication Project

Create Django project named DjangoAuth with command:
django-admin startproject DjangoAuth

Run following commands to create new Django App named authen inside the project:

  • cd DjangoAuth
  • python startapp authen

Open upload/, we can see AuthenConfig class (subclass of the django.apps.AppConfig) that represents our Django app and its configuration:

from django.apps import AppConfig

class AuthenConfig(AppConfig):
    name = 'authen'

Open, find INSTALLED_APPS, then add:


Config Django project to work with database

MySQL Database

Install & Import Python MySQL Client

We have to install Python MySQL Client to work with MySQL database.
In this tutorial, we use pymysql: pip install pymysql.

Once the installation is successful, import this module in DjangoAuth/

Django Authentication – How to build Login/Logout/Signup for custom User

Discussion (0)

Editor guide