Performance: Setting and getting session data
This affects server response time and client perceived speed by managing user session data efficiently.
Jump into concepts and practice - no test required
def view(request): request.session['cart_id'] = cart_id cart = get_cart_from_db(cart_id) return HttpResponse('Done')
def view(request): request.session['cart'] = large_cart_object data = request.session['cart'] return HttpResponse('Done')
| Pattern | Session Data Size | Session Writes | Server Response Impact | Verdict |
|---|---|---|---|---|
| Store large objects in session | Large | Multiple | High delay due to serialization | [X] Bad |
| Store small IDs and fetch data on demand | Small | Single | Low delay, faster response | [OK] Good |
| Multiple session writes separately | Small | Multiple | Moderate delay due to repeated saves | [!] OK |
| Batch session updates in one call | Small | Single | Minimal delay, efficient | [OK] Good |
request.session like a dictionary.request.session['key'] = value. Methods like set or set_session do not exist.get(key, default) to retrieve values safely without error if key is missing.request.session.get('user_id', None). Using brackets with comma or colon is invalid syntax, and fetch is not a valid method.def my_view(request):
visits = request.session.get('visits', 0)
visits += 1
request.session['visits'] = visits
return HttpResponse(f"Visit count: {visits}")request.session.get('visits', 0) which returns 0 if 'visits' key is missing.def view(request):
user = request.session['user', 'guest']
return HttpResponse(user)request.session['user', 'guest'] which passes a tuple ('user', 'guest') as the key.request.session.get('user', 'guest').last_page with a default, then updates it with request.path. Other options set before getting or use invalid methods.