Django Authentication Examples for Beginners

Explore practical examples of Django authentication to enhance your web applications with secure user management.
By Taylor

Understanding Django Authentication

Django provides a powerful authentication system that allows you to manage users, handle logins, and secure your web applications. In this guide, we will explore three diverse examples of Django authentication, each tailored to different use cases. Whether you’re building a simple blog or a complex web application, these examples will help you understand how to implement authentication effectively.

1. Basic User Registration

In many web applications, you’ll want users to register before they can access certain features. This example demonstrates how to create a simple user registration form.

In this use case, we’ll set up a registration form that captures user information and creates a new user account.

# views.py
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from django.contrib import messages
from .forms import UserRegistrationForm

def register(request):
    if request.method == 'POST':
        form = UserRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            messages.success(request, 'Registration successful! You can now log in.')
            return redirect('login')
    else:
        form = UserRegistrationForm()
    return render(request, 'register.html', {'form': form})

In this example, we import the necessary modules and create a view function. When the registration form is submitted, we validate the data, save the user, and display a success message. The UserRegistrationForm should be defined in forms.py, capturing fields like username and password.

Notes:

  • Ensure you have a template named register.html to display the form.
  • You can customize the form to include additional fields like email or profile information.

2. User Login with Custom Redirect

Once users are registered, you’ll need to implement a login system. This example shows how to log users in and redirect them to a specific page based on their user type.

In this use case, we want to redirect users to a dashboard or homepage after logging in.

# views.py
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def user_login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(request, username=username, password=password)
        if user is not None:
            login(request, user)
            if user.is_staff:
                return redirect('admin_dashboard')
            else:
                return redirect('user_home')
        else:
            messages.error(request, 'Invalid credentials')
    return render(request, 'login.html')

In this example, we check the user’s credentials and log them in. Depending on whether they are staff or regular users, we redirect them to the appropriate dashboard or homepage.

Notes:

  • Ensure you have the corresponding templates for login and the user dashboards.
  • You can add error handling for failed login attempts to enhance user experience.

3. Password Reset Functionality

Allowing users to reset their passwords is crucial for any application. This example demonstrates how to implement a password reset using Django’s built-in views.

In this use case, users will receive an email with a link to reset their password.

# urls.py
from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('password_reset/', auth_views.PasswordResetView.as_view(), name='password_reset'),
    path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
    path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
    path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]

Here, we configure the URLs required for the password reset process. Django handles the views that send the reset email and confirm the new password.

Notes:

  • You need to configure email settings in your settings.py to send the password reset emails.
  • Customize the email templates to match your application’s branding.

These examples illustrate different facets of Django authentication, from user registration to advanced features like password resets. By understanding and implementing these examples of Django authentication, you can create secure and user-friendly web applications.