How To Add Login Page Django

How To Articles

So you want to add a login page to your Django website? Well, you’ve come to the right place! As a web developer who has worked extensively with Django, I can assure you that implementing a login page is not as complicated as it may seem at first. In fact, Django provides a robust authentication system that makes it a breeze to add user authentication to your website.

Before we dive into the nitty-gritty of adding a login page, let me quickly explain the importance of user authentication. User authentication is an essential feature for any website that requires user-specific functionality or personalized experiences. Whether you’re building an e-commerce platform or a social media application, having a login page allows users to create accounts, log in, and access their personalized data.


Before we get started, make sure you have Django installed on your machine. If you haven’t installed Django yet, you can do so by running the following command:

pip install django

Once Django is installed, you can create a new Django project by running the command:

django-admin startproject project_name

Replace project_name with the desired name for your project. Now that we have our project set up, let’s move on to adding the login page.

Step 1: Create a User Model

The first step in adding a login page is to create a custom user model. Django provides a built-in user model, but if you want to add additional fields or customize the user model further, you’ll need to create your own. This can be done by creating a new file called in your Django app folder and defining the user model as follows:

from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):
# Add custom fields here

You can add any additional fields you want to the CustomUser model, such as a profile picture or a bio. Once you’ve defined the custom user model, don’t forget to update the AUTH_USER_MODEL setting in your project’s file to point to your new user model:

AUTH_USER_MODEL = 'your_app.CustomUser'

Step 2: Create Login and Logout Views

Now that we have our user model set up, let’s move on to creating the views for our login and logout pages. In your Django app folder, create a new file called and define the following views:

from django.contrib.auth.views import LoginView, LogoutView

class CustomLoginView(LoginView):
template_name = 'login.html'
# Customize login behavior if needed

class CustomLogoutView(LogoutView):
# Customize logout behavior if needed

The CustomLoginView and CustomLogoutView classes inherit from Django’s built-in LoginView and LogoutView respectively. You can customize the behavior of these views by overriding their methods or setting additional attributes.

Step 3: Create Login and Logout Templates

Next, we need to create the HTML templates for our login and logout pages. In your Django app folder, create a new directory called templates if it doesn’t already exist. Within the templates directory, create another directory called registration. This is where Django looks for the login and logout templates by default.

Create a new file called login.html inside the registration directory and add the following code:

{% extends 'base.html' %}

{% block content %}


{% csrf_token %}
{{ form.as_p }}

{% endblock %}

The extends tag is used to inherit from a base template, which should contain the common structure of your website. Replace 'base.html' with the path to your base template. The block tags define sections that can be overridden in child templates. In this case, the content block is where the login form is rendered.

Create a similar file called logout.html and add the following code:

{% extends 'base.html' %}

{% block content %}


You have been logged out successfully.

{% endblock %}

The logout.html template simply displays a message to the user indicating that they have been logged out successfully.

Step 4: Define URL Patterns

Finally, we need to define the URL patterns for our login and logout views. In your Django app folder, open the file and add the following code:

from django.urls import path
from .views import CustomLoginView, CustomLogoutView

urlpatterns = [
path('login/', CustomLoginView.as_view(), name='login'),
path('logout/', CustomLogoutView.as_view(), name='logout'),

The path function is used to define a URL pattern. Replace CustomLoginView and CustomLogoutView with the actual names of your login and logout view classes. The name attribute is used to reference these URLs in your templates.

And that’s it! You’ve now added a login page to your Django website. To see it in action, run the development server by executing the command:

python runserver

Open your browser and navigate to http://localhost:8000/login/. You should see the login page rendered with the form we defined earlier.


Adding a login page to your Django website is a crucial step in building user authentication functionality. By following the steps outlined in this article, you can easily create a custom user model, implement login and logout views, create corresponding templates, and define the necessary URL patterns.

Django’s built-in authentication system provides a solid foundation for user authentication, allowing you to focus on building the unique features and experiences of your website. So go ahead and add that login page, and watch your website come to life with user-specific features!