Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Why sessions matter
📖 Scenario: You are building a simple Django web app where users can add items to a shopping cart. Since HTTP is stateless, the app needs a way to remember the cart contents as the user browses different pages.Sessions help keep track of user data between requests without requiring login. This project will show how to use Django sessions to store and retrieve cart items.
🎯 Goal: Build a Django view that uses sessions to store a list of cart items. The user can add items, and the session remembers them across page visits.
📋 What You'll Learn
Create a Django view function called add_to_cart that adds an item to the session cart list.
Initialize the cart list in the session if it does not exist.
Add a new item string to the session cart list.
Save the session after updating the cart.
Return a simple HTTP response confirming the item was added.
💡 Why This Matters
🌍 Real World
Websites use sessions to remember user data like shopping carts, login status, or preferences across multiple pages.
💼 Career
Understanding sessions is essential for backend web developers to manage user state and build interactive web applications.
Progress0 / 4 steps
1
Set up the initial Django view function
Create a Django view function called add_to_cart that takes request as a parameter and returns an HttpResponse with the text 'Item added to cart'. Import HttpResponse from django.http.
Django
Hint
Remember to import HttpResponse and define a function named add_to_cart that returns a simple response.
2
Initialize the cart list in the session
Inside the add_to_cart function, check if 'cart' exists in request.session. If not, create it as an empty list. Use if 'cart' not in request.session: and set request.session['cart'] = [].
Django
Hint
Use if 'cart' not in request.session: to check and then assign an empty list to request.session['cart'].
3
Add an item to the session cart list
Still inside add_to_cart, append the string 'apple' to the request.session['cart'] list. Use request.session['cart'].append('apple').
Django
Hint
Use the append method on request.session['cart'] to add the string 'apple'.
4
Save the session after updating the cart
After appending the item, call request.session.modified = True to tell Django the session data changed. Keep the existing return statement.
Django
Hint
Set request.session.modified = True after changing the session list to save changes.
Practice
(1/5)
1. Why do Django sessions matter in web development?
easy
A. They change the website's design dynamically.
B. They speed up the website loading time.
C. They automatically fix bugs in the code.
D. They let websites remember user data between requests.
Solution
Step 1: Understand what sessions do
Sessions store user data temporarily so the website can remember users across different pages or visits.
Step 2: Identify the main purpose of sessions
Sessions help keep track of things like login status, shopping carts, or preferences, which means remembering user data is their key role.
Final Answer:
They let websites remember user data between requests. -> Option D
Quick Check:
Sessions remember user data = A [OK]
Hint: Sessions remember user info across pages [OK]
Common Mistakes:
Thinking sessions speed up loading
Believing sessions fix code bugs
Confusing sessions with design changes
2. Which of the following is the correct way to set a session variable in Django?
easy
A. request.session['user'] = 'Alice'
B. request.set_session('user', 'Alice')
C. session['user'] = 'Alice'
D. request.session.set('user', 'Alice')
Solution
Step 1: Recall Django session syntax
In Django, session variables are set using dictionary-like syntax on request.session.
Step 2: Match the correct syntax
The correct way is request.session['key'] = value, so request.session['user'] = 'Alice' is valid.
Final Answer:
request.session['user'] = 'Alice' -> Option A
Quick Check:
Set session with dictionary syntax = C [OK]
Hint: Use request.session like a dictionary to set values [OK]
Common Mistakes:
Using request.set_session instead of request.session
Trying to set session without request object
Using method calls instead of dictionary syntax
3. What will be the output of this Django view code snippet?
The code uses request.session.get('count', 0) to get the current count or 0 if not set.
Step 2: Calculate the new count value
It adds 1 to the current count, so the first time this runs, count becomes 1.
Final Answer:
Count: 1 -> Option B
Quick Check:
Initial count 0 + 1 = 1 [OK]
Hint: Session get returns default if key missing [OK]
Common Mistakes:
Assuming count starts at 0 output
Expecting string 'count' instead of number
Thinking session must be manually created first
4. Identify the error in this Django session code:
def view(request):
request.session['user'] = 'Bob'
del request.session['user']
return HttpResponse(request.session['user'])
medium
A. KeyError because 'user' is deleted before access
B. No error, code works fine
C. SyntaxError in session deletion
D. Session data cannot be deleted
Solution
Step 1: Analyze session deletion
The code deletes the 'user' key from session using del request.session['user'].
Step 2: Check access after deletion
After deletion, it tries to access request.session['user'], which no longer exists, causing a KeyError.
Final Answer:
KeyError because 'user' is deleted before access -> Option A
Quick Check:
Access deleted key causes KeyError = B [OK]
Hint: Don't access session keys after deleting them [OK]
Common Mistakes:
Thinking deletion syntax is wrong
Assuming session keys can't be deleted
Ignoring KeyError on missing keys
5. You want to track a user's favorite color across visits using Django sessions. Which approach correctly saves and retrieves this data?
def set_color(request):
color = request.GET.get('color')
if color:
# Save color in session
...
return HttpResponse('Color saved')
def get_color(request):
# Retrieve color from session
...
return HttpResponse(f'Favorite color: {color}')
hard
A. set_color: session['color'] = color; get_color: color = session.get('color')
B. set_color: request.session.set('color', color); get_color: color = request.session['color']
C. set_color: request.session['color'] = color; get_color: color = request.session.get('color', 'unknown')
D. set_color: request.session.color = color; get_color: color = request.session.color
Solution
Step 1: Correctly save session data
Use dictionary syntax: request.session['color'] = color to save the value.
Step 2: Safely retrieve session data
Use request.session.get('color', 'unknown') to get the color or default if missing.
Final Answer:
set_color: request.session['color'] = color; get_color: color = request.session.get('color', 'unknown') -> Option C
Quick Check:
Use dict syntax and get() for safe access = D [OK]
Hint: Use dict syntax and get() to handle missing keys [OK]
Common Mistakes:
Using session.set() method which doesn't exist
Trying to access session attributes like object properties