Флэш-сообщения Django в Python — как использовать

В этом уроке вы узнаете, как использовать флэш-сообщения Django в Python, включая их создание и отображение.

Содержание

Что такое флэш-сообщения 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»:

флэш-сообщения django - недопустимая форма

… вы увидите сообщение об ошибке:

флэш-сообщения django - сообщение об ошибке

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *