Флэш-сообщения Django в Python — как использовать
В этом уроке вы узнаете, как использовать флэш-сообщения Django в Python, включая их создание и отображение.
- Что такое флэш-сообщения Django?
- Пример сообщения Django Flash
- Создание флэш-сообщений Django
- Отображение флэш-сообщений
Что такое флэш-сообщения Django?
Флэш-сообщение — это одноразовое уведомление. Чтобы отобразить флэш-сообщение в Django, используйте сообщения из модуля django.contrib:
from django.contrib import messages
Сообщения имеют несколько полезных функций для отображения информации, предупреждений и сообщений об ошибках:
- messages.debug – отображает отладочное сообщение.
- messages.info – отображает информационное сообщение.
- messages.success – сообщение об успешном выполнении.
- messages.warning – выводится предупреждающее сообщение.
- messages.error – выводит сообщение об ошибке.
Все эти функции принимают объект HttpRequest в качестве первого аргумента и message в качестве второго аргумента.
Пример сообщения Django Flash
Мы реализуем флэш-сообщения для приложения блога в django_project.
Создание флэш-сообщений Django
Измените функцию create_post(), добавив флэш-сообщения:
from django.shortcuts import render,redirect from django.contrib import messages from .models import Post from .forms import PostForm def create_post(request): if request.method == 'GET': context = {'form': PostForm()} return render(request,'blog/post_form.html',context) elif request.method == 'POST': form = PostForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'The post has been created successfully.') return redirect('posts') else: messages.error(request, 'Please correct the following errors:') return render(request,'blog/post_form.html',{'form':form})
Как это работает.
- Сначала импортируем сообщения из django.contrib:
from django.contrib import messages
- Во-вторых, создайте сообщение об успешном выполнении после сохранения значений формы в базе данных, вызвав функцию success():
messages.success(request, 'The post has been created successfully.')
- В-третьих, создайте сообщение об ошибке, если форма недопустима, вызвав функцию error():
messages.error(request, 'Please correct the following errors:')
Отображение флэш-сообщений
Измените шаблон base.html для отображения флэш-сообщений:
{%load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" href="{% static 'css/style.css' %}" /> <script src="{% static 'js/app.js' %}" defer></script> <title>My Site</title> </head> <body> {% if messages %} <div class="messages"> {% for message in messages %} <div class="alert {% if message.tags %}alert-{{ message.tags }}"{% endif %}> {{ message }} </div> {% endfor %} </div> {% endif %} {%block content%} {%endblock content%} </body> </html>
Если вы перейдете к форме http://127.0.0.1/post/create, введите значения и нажмите кнопку «Save»:
… вы увидите сообщение об успешном выполнении:
Если вы обновите страницу, сообщение исчезнет, поскольку оно отображается только один раз.
Если вы пропустите ввод значения в поле заголовка и нажмете кнопку «Save»:
… вы увидите сообщение об ошибке: