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_requiredto protect views. - Use
{% if user.is_authenticated %}in templates.
🎉 You have completed the Django course!