python / intermediate
Snippet
Django Session-Based Flash Messages
Django's messaging framework uses sessions to store temporary messages that display once and then disappear. The messages module provides convenience methods for different message levels (success, error, warning, info). Messages are stored in the session and retrieved on the next request, typically rendered in templates using the messages framework. Extra_tags allow custom CSS classes for styling.
snippet.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from django.contrib import messagesfrom django.shortcuts import redirectdef custom_middleware(get_response):def middleware(request):if not request.session.session_key:request.session.create()response = get_response(request)return responsereturn middlewareclass NotificationService:@staticmethoddef add_success(request, message):messages.success(request, message, extra_tags='success')@staticmethoddef add_error(request, message):messages.error(request, message, extra_tags='danger')@staticmethoddef add_warning(request, message):messages.warning(request, message)@staticmethoddef add_info(request, message):messages.info(request, message)def profile_update(request):form = ProfileUpdateForm(request.POST, instance=request.user)if form.is_valid():form.save()NotificationService.add_success(request,'Profile updated successfully')return redirect('profile')for field, errors in form.errors.items():for error in errors:NotificationService.add_error(request, error)return redirect('profile_edit')
django
Breakdown
1
messages.success(request, message, extra_tags='success')
Add success message with custom CSS class for styling
2
if not request.session.session_key: request.session.create()
Ensure session exists before storing messages
3
for field, errors in form.errors.items()
Iterate over form errors to create individual error messages
4
extra_tags='danger'
Add custom tag for danger styling while keeping default tag