Authentication in Django: User Models in Django

Capítulo 133

Estimated reading time: 3 minutes

+ Exercise
Audio Icon

Listen in audio

0:00 / 0:00

Authentication is an essential component of almost all web applications. In Django, a Python web development framework, authentication is built in by default, making creating and managing users a relatively simple task. However, to really get the most out of Django's authentication system, it's important to understand how user models work.

Django provides a default user model that can be used to create and manage users. This user template is quite complete, including fields for username, password, email address, full name, date of birth, and much more. However, Django also lets you create custom user models, which can be useful if you need additional functionality that the default user model doesn't provide.

To create a custom user model, you need to create a new class in your Django application that inherits from 'AbstractUser' or 'AbstractBaseUser'. 'AbstractUser' is an abstract version of the standard user model, while 'AbstractBaseUser' provides only the most basic fields and methods, allowing you to fully define your own user model.

For example, if you wanted to add a field for the user's phone number, you could create a custom user template like this:

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length=15)

Once you've created your custom user model, you need to tell Django to use it instead of the default user model. You do this by adding the following line to your Django configuration file:

Continue in our app.
  • Listen to the audio with the screen off.
  • Earn a certificate upon completion.
  • Over 5000 courses for you to explore!
Or continue reading below...
Download App

Download the app

AUTH_USER_MODEL = 'myapp.CustomUser'

Where 'myapp' is the name of your Django application and 'CustomUser' is the name of your custom user model.

Once you've configured Django to use your custom user model, you can use Django's authentication system as you normally would. You can create users, check passwords, manage sessions, and much more. Django will take care of all the details for you, like securely storing passwords and managing session cookies.

In addition, Django provides several useful methods for working with users. For example, you can use the 'authenticate' method to verify that the username and password provided by a user matches an existing user. You can use the 'login' method to start a session for a user, and the 'logout' method to end a session. You can also use the 'is_authenticated' method to check if a user is currently authenticated.

In short, Django's authentication system is a powerful tool that makes user management a breeze. With the ability to create custom user templates, you can adapt Django's authentication system to suit your application's specific needs.

Therefore, when creating a course on building systems with Python and Django, it is crucial to cover Django authentication and Django user models, as they are fundamental components of any Django application. By understanding these concepts, students will be well equipped to create and manage users in their own Django applications.

Now answer the exercise about the content:

In Django, how can you create a custom user template that includes a field for the user's phone number?

You are right! Congratulations, now go to the next page

You missed! Try again.

To create a custom user model in Django with additional fields like 'phone_number', you need to create a new class that inherits from AbstractUser or AbstractBaseUser and then add the desired fields.

Next chapter

Authentication in Django: User authentication with username and password

Arrow Right Icon
Free Ebook cover System creation course with Python and Django complete
76%

System creation course with Python and Django complete

New course

176 pages

Download the app to earn free Certification and listen to the courses in the background, even with the screen off.