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
Setting and Getting Session Data in Django
📖 Scenario: You are building a simple Django web app that tracks a user's favorite color during their visit. You want to store this color in the session so it remembers the choice as the user navigates pages.
🎯 Goal: Build a Django view that sets a session variable called favorite_color to a specific value, and another view that reads and displays this session value.
📋 What You'll Learn
Create a Django view function called set_color that sets request.session['favorite_color'] to the string 'blue'.
Create a Django view function called get_color that reads request.session['favorite_color'] and returns it in an HttpResponse.
Use the Django HttpResponse class to return simple text responses.
Ensure the session data is properly set and retrieved using Django's session framework.
💡 Why This Matters
🌍 Real World
Web apps often need to remember user preferences or temporary data during a visit. Sessions let you store this data securely on the server side.
💼 Career
Understanding session management is essential for backend web developers working with Django or similar frameworks to maintain user state and preferences.
Progress0 / 4 steps
1
Create the set_color view to set session data
Write a Django view function called set_color that takes request as a parameter and sets request.session['favorite_color'] to the string 'blue'. Return an HttpResponse with the text 'Color set to blue'.
Django
Hint
Use request.session['favorite_color'] = 'blue' to store the color in the session.
2
Create the get_color view to read session data
Add a Django view function called get_color that takes request as a parameter and reads the session value request.session['favorite_color']. Return an HttpResponse with the text 'Favorite color is: ' followed by the session value.
Django
Hint
Use color = request.session['favorite_color'] to get the stored color.
3
Add a check for missing session data in get_color
Modify the get_color view to use request.session.get('favorite_color', 'not set') to safely get the session value or return 'not set' if it does not exist. Return an HttpResponse with the text 'Favorite color is: ' followed by this value.
Django
Hint
Use request.session.get('favorite_color', 'not set') to avoid errors if the session key is missing.
4
Add URL patterns for the views
Create a Django urlpatterns list with two path entries: one for set_color at URL 'set/' and one for get_color at URL 'get/'. Import path from django.urls and import the two view functions.
Django
Hint
Use path('set/', set_color) and path('get/', get_color) inside urlpatterns.
Practice
(1/5)
1. What is the correct way to store a user's favorite color in Django session inside a view?
easy
A. request.session['favorite_color'] = 'blue'
B. request.session.set('favorite_color', 'blue')
C. session['favorite_color'] = 'blue'
D. request.set_session('favorite_color', 'blue')
Solution
Step 1: Understand Django session assignment
In Django, session data is stored by assigning a value to a key in request.session like a dictionary.
Step 2: Identify correct syntax for setting session data
The correct syntax is request.session['key'] = value. Methods like set or set_session do not exist.
Final Answer:
request.session['favorite_color'] = 'blue' -> Option A
Quick 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
A. request.session.get('user_id' : None)
B. request.session['user_id', None]
C. request.session.fetch('user_id', None)
D. request.session.get('user_id', None)
Solution
Step 1: Recall the method to get session data safely
Django sessions use the dictionary method get(key, default) to retrieve values safely without error if key is missing.
Step 2: Identify correct syntax
The correct syntax is request.session.get('user_id', None). Using brackets with comma or colon is invalid syntax, and fetch is not a valid method.
Final Answer:
request.session.get('user_id', None) -> Option D
Quick 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?
The code uses request.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 C
Quick 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
A. TypeError because session is not subscriptable
B. KeyError if 'user' key missing
C. Returns 'guest' string correctly
D. SyntaxError due to incorrect session key access
Solution
Step 1: Analyze session key access syntax
The code uses request.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', use request.session.get('user', 'guest').
Final Answer:
KeyError if 'user' key missing -> Option B
Quick 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
A. last = request.session.get('last_page', 'None'); request.session['last_page'] = request.path
B. request.session['last_page'] = request.path; last = request.session.get('last_page', 'None')
C. request.session.set('last_page', request.path); last = request.session['last_page']
D. last = request.session['last_page']; request.session['last_page'] = request.path
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 retrieves last_page with a default, then updates it with request.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 A
Quick 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