Django Authentication

Django ships with a complete authentication system — registration, login, logout, password reset, and permission checks.

Login view

Python
from django.contrib.auth import authenticate, login
from django.shortcuts import render, redirect

def login_view(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)
            return redirect('home')
        else:
            return render(request, 'login.html', {'error': 'Invalid credentials'})
    return render(request, 'login.html')

Protecting views

Python
from django.contrib.auth.decorators import login_required

@login_required
def dashboard(request):
    return render(request, 'dashboard.html')

Template auth

HTML
{% if user.is_authenticated %}
  <p>Welcome, {{ user.username }}!</p>
  <a href="{% url 'logout' %}">Log out</a>
{% else %}
  <a href="{% url 'login' %}">Log in</a>
{% endif %}

Tips

  • Use Django's built-in auth views — don't roll your own.
  • Use @login_required to protect views.
  • Use {% if user.is_authenticated %} in templates.

🎉 You have completed the Django course!