0
0
Djangoframework~5 mins

Cookie-based sessions vs database sessions in Django

Choose your learning style9 modes available
Introduction

Sessions help websites remember who you are. Cookie-based sessions store data in your browser, while database sessions keep data on the server.

When you want to keep user login info without asking every time.
When you need to save small preferences like theme or language.
When you want to store more data securely on the server.
When you want to share session data across multiple servers.
When you want to control session expiration and cleanup easily.
Syntax
Django
In Django settings.py:

# For cookie-based sessions
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

# For database sessions
SESSION_ENGINE = 'django.contrib.sessions.backends.db'

Use SESSION_ENGINE to choose the session type.

Cookie sessions store data on the user's browser, signed to prevent tampering.

Examples
This stores session data inside a cookie on the user's browser.
Django
# Cookie-based session example
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'
This stores session data in the database table django_session.
Django
# Database session example
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
Sample Program

This simple Django view saves a favorite color in the session and then reads it back. It works the same whether you use cookie-based or database sessions.

Django
from django.http import HttpResponse
from django.shortcuts import redirect

def set_session(request):
    request.session['favorite_color'] = 'blue'
    return HttpResponse('Favorite color saved in session.')

def get_session(request):
    color = request.session.get('favorite_color', 'not set')
    return HttpResponse(f'Favorite color is {color}.')
OutputSuccess
Important Notes

Cookie sessions keep data on the client, so size is limited (usually 4KB max).

Database sessions can store more data and are safer from user tampering.

Database sessions require a database hit on each request, which can be slower than cookie sessions.

Summary

Cookie-based sessions store data in the browser; database sessions store data on the server.

Use cookie sessions for small, simple data and database sessions for larger or sensitive data.

Django lets you switch easily by changing SESSION_ENGINE in settings.