Sessions help remember information about a user while they browse your website. This makes the site feel personal and keeps data safe between pages.
Setting and getting session data in Django
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Django
request.session['key'] = value # To set data value = request.session.get('key', default) # To get data
Session data is stored on the server, not in the user's browser.
Use
get to avoid errors if the key does not exist.Examples
Django
request.session['username'] = 'alice'
Django
cart = request.session.get('cart', [])Django
request.session['theme'] = 'dark'
Django
visits = request.session.get('visits', 0) request.session['visits'] = visits + 1
Sample Program
This Django view counts how many times a user visits the page. It gets the current count from the session, adds one, saves it back, and shows the count.
Django
from django.http import HttpResponse def visit_counter(request): visits = request.session.get('visits', 0) visits += 1 request.session['visits'] = visits return HttpResponse(f"You have visited this page {visits} times.")
Important Notes
Session data is stored per user and lasts until the session expires or is cleared.
Always check if a session key exists before using it to avoid errors.
Sessions use cookies to identify users but do not store the actual data in cookies.
Summary
Sessions let you save and retrieve user-specific data across pages.
Use request.session['key'] = value to save data.
Use request.session.get('key', default) to safely get data.
Practice
1. What is the correct way to store a user's favorite color in Django session inside a view?
easy
Solution
Step 1: Understand Django session assignment
In Django, session data is stored by assigning a value to a key inrequest.sessionlike a dictionary.Step 2: Identify correct syntax for setting session data
The correct syntax isrequest.session['key'] = value. Methods likesetorset_sessiondo not exist.Final Answer:
request.session['favorite_color'] = 'blue' -> Option AQuick Check:
Set session data with dictionary syntax [OK]
Hint: Use dictionary style assignment to set session data [OK]
Common Mistakes:
- Using non-existent methods like set() or set_session()
- Trying to assign session data without request.session
- Using session variable without request object
2. Which of the following is the correct syntax to retrieve a session value safely with a default in Django?
easy
Solution
Step 1: Recall the method to get session data safely
Django sessions use the dictionary methodget(key, default)to retrieve values safely without error if key is missing.Step 2: Identify correct syntax
The correct syntax isrequest.session.get('user_id', None). Using brackets with comma or colon is invalid syntax, andfetchis not a valid method.Final Answer:
request.session.get('user_id', None) -> Option DQuick Check:
Use get() with key and default [OK]
Hint: Use get() method with key and default to avoid errors [OK]
Common Mistakes:
- Using brackets with comma or colon inside session access
- Using non-existent fetch() method
- Accessing session key directly without default causing KeyError
3. Given the following Django view code snippet, what will be the output if the session has no 'visits' key initially?
def my_view(request):
visits = request.session.get('visits', 0)
visits += 1
request.session['visits'] = visits
return HttpResponse(f"Visit count: {visits}")medium
Solution
Step 1: Understand default value usage in get()
The code usesrequest.session.get('visits', 0)which returns 0 if 'visits' key is missing.Step 2: Follow the increment and assignment
It adds 1 to visits (0 + 1 = 1), then stores it back in session and returns the string with visits value.Final Answer:
Visit count: 1 -> Option CQuick Check:
Default 0 + 1 increment = 1 [OK]
Hint: Default value in get() prevents KeyError, then increment [OK]
Common Mistakes:
- Assuming visits starts at None or causes error
- Forgetting to add 1 before storing
- Expecting KeyError when key is missing
4. Identify the error in this Django view code that tries to get a session value:
def view(request):
user = request.session['user', 'guest']
return HttpResponse(user)medium
Solution
Step 1: Analyze session key access syntax
The code usesrequest.session['user', 'guest']which passes a tuple ('user', 'guest') as the key.Step 2: Identify correct way to provide default
This raises KeyError if the tuple key is missing. To get 'user' with default 'guest', userequest.session.get('user', 'guest').Final Answer:
KeyError if 'user' key missing -> Option BQuick Check:
Tuple in brackets causes KeyError [OK]
Hint: Use get() for default, not tuple keys in brackets [OK]
Common Mistakes:
- Using tuple inside brackets for session key
- Expecting bracket syntax to accept default value
- Confusing dictionary get() method with bracket access
5. You want to track a user's last visited page URL in session and display it on the next page visit. Which code snippet correctly sets and gets this session data in Django?
hard
Solution
Step 1: Understand the order of getting and setting session data
To show the last visited page, first get the stored value, then update it with the current page path.Step 2: Identify correct code order and methods
last = request.session.get('last_page', 'None'); request.session['last_page'] = request.path first retrieveslast_pagewith a default, then updates it withrequest.path. Other options set before getting or use invalid methods.Final Answer:
last = request.session.get('last_page', 'None'); request.session['last_page'] = request.path -> Option AQuick Check:
Get old value before updating session [OK]
Hint: Get session value before updating it to show previous data [OK]
Common Mistakes:
- Setting session before getting old value loses previous data
- Using non-existent set() method
- Accessing session key directly without default causing error
