Code-Memo

Middleware

Built-in Middleware

Django includes several middleware classes that handle security, session management, authentication, and other core functionalities. These middleware components are listed in MIDDLEWARE inside settings.py.

SecurityMiddleware

Enhances security by enforcing HTTPS, preventing clickjacking, and setting security headers.

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
]
CommonMiddleware

Handles various HTTP enhancements, including URL normalization and redirecting missing slashes.

MIDDLEWARE = [
    'django.middleware.common.CommonMiddleware',
]
CsrfViewMiddleware

Protects against Cross-Site Request Forgery (CSRF) attacks by validating CSRF tokens in requests.

MIDDLEWARE = [
    'django.middleware.csrf.CsrfViewMiddleware',
]
AuthenticationMiddleware

Associates users with requests, making request.user available in views.

MIDDLEWARE = [
    'django.contrib.auth.middleware.AuthenticationMiddleware',
]
SessionMiddleware

Handles user sessions by enabling session storage in cookies or databases.

MIDDLEWARE = [
    'django.contrib.sessions.middleware.SessionMiddleware',
]
XFrameOptionsMiddleware

Protects against clickjacking by setting X-Frame-Options headers.

MIDDLEWARE = [
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
MessageMiddleware

Enables temporary messages between requests, used with Django’s messages framework.

MIDDLEWARE = [
    'django.contrib.messages.middleware.MessageMiddleware',
]
LocaleMiddleware

Enables language translation and timezone handling for internationalization.

MIDDLEWARE = [
    'django.middleware.locale.LocaleMiddleware',
]

Each middleware component plays a specific role in handling requests, responses, and security features.