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
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
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