python / intermediate
Snippet
Django Messages Framework für Benutzer-Feedback
Djangos Messages Framework ermöglicht Flash-Nachrichten für Benutzer-Feedback. Nachrichten werden in Sessions gespeichert und nach Weiterleitung einmal angezeigt. Verschiedene Message-Level (success, error, warning, info) erlauben unterschiedliche CSS-Styling. Benötigt MessageMiddleware und Session-Backend.
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
# views.pyfrom django.contrib import messagesfrom django.shortcuts import redirectdef contact_form(request):if request.method == 'POST':form = ContactForm(request.POST)if form.is_valid():form.send_email()messages.success(request, 'Message sent successfully!')return redirect('contact_success')else:messages.error(request, 'Please fix the errors below.')return render(request, 'contact.html', {'form': form})# template (base.html){% if messages %}<ul class="messages">{% for message in messages %}<li class="{{ message.tags }}">{{ message }}</li>{% endfor %}</ul>{% endif %}# settings.py (add middleware)MIDDLEWARE = [...'django.contrib.messages.middleware.MessageMiddleware',]SESSIONENGINE = 'django.contrib.sessions.backends.db'
django
Erklärung
1
messages.success(request, 'Message sent successfully!')
Fügt Success-Level-Nachricht hinzu, die bis zur Anzeige besteht
2
messages.error(request, 'Please fix the errors below.')
Fehlernachricht inline angezeigt ohne Weiterleitung bei Formularvalidierung
3
{{ message.tags }}
Gibt CSS-Klassen wie 'success', 'error', 'warning' zum Styling aus
4
MessageMiddleware
Middleware erforderlich um Nachrichten bei jedem Request/Response-Zyklus zu verarbeiten
5
SESSIONENGINE
Nachrichten benötigen ein Session-Backend; db-Backend ist Standard