0 day streak
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
python
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 messages
from django.shortcuts import redirect
def custom_middleware(get_response):
def middleware(request):
if not request.session.session_key:
request.session.create()
response = get_response(request)
return response
return middleware
class NotificationService:
@staticmethod
def add_success(request, message):
messages.success(request, message, extra_tags='success')
@staticmethod
def add_error(request, message):
messages.error(request, message, extra_tags='danger')
@staticmethod
def add_warning(request, message):
messages.warning(request, message)
@staticmethod
def 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