0 Tage Serie
python / intermediate
Snippet

Django Session-Basierte Flash-Nachrichten

Djangos Messaging-Framework verwendet Sessions um temporäre Nachrichten zu speichern, die einmal angezeigt werden und dann verschwinden. Das messages-Modul bietet Komfortmethoden für verschiedene Nachrichtenlevel (success, error, warning, info). Nachrichten werden in der Session gespeichert und bei der nächsten Anfrage abgerufen, typischerweise in Templates mit dem messages-Framework gerendert. Extra_tags ermöglichen benutzerdefinierte CSS-Klassen für 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
Erklärung
1
messages.success(request, message, extra_tags='success')
Füge Erfolgsnachricht mit benutzerdefinierter CSS-Klasse für Styling hinzu
2
if not request.session.session_key: request.session.create()
Stelle sicher dass Session existiert bevor Nachrichten gespeichert werden
3
for field, errors in form.errors.items()
Iteriere über Formularfehler um individuelle Fehlernachrichten zu erstellen
4
extra_tags='danger'
Füge Custom-Tag für Danger-Styling hinzu während Default-Tag behalten wird