В этом уроке мы узнаем как передавать флэш-сообщения с помощью метода Flask flash().

Что означает передать флэш-сообщение?

Для GUI-приложений всегда полезно давать обратную связь пользователю на его действия.

То есть, например, в форме Flask, если пользователь оставляет поле пустым, то вполне уместно выдать ему сообщение об ошибке/информацию о том, что поле является обязательным для заполнения.

В графическом интерфейсе Python Tkinter для отображения сообщения используется месседж или диалоговое окно, а в Client-Side Scripting Language JavaScript (Клиентский язык сценариев JavaScript) это делается с помощью функции alert.

Также, во Flask у нас есть метод flash, позволяющий сделать именно это.

Как работает метод Flask flash?

Метод Flask flash показывает сообщения пользователям.

С помощью Flash мы можем создать флэш-сообщение в одном представлении Flask, а затем показать его в другом, называемом "next (следующий)", которое обычно является шаблоном (template).

Типичным примером шаблонного представления является:

@app.route('/template')
def blog():
    #codes...
    #codes...
    return render_template('template.html')

Таким образом, представление Flask создает флэш-сообщение в одном представлении и затем передает его в следующее (вместе с запросом), которое отображает сообщение пользователю.

Синтаксис для Flash:

flash(message,category)

Здесь,

  • message : Сообщение для отображения

  • category : (Категория). Необязательный параметр, который может быть установлен в "error" (ошибка), "info" (информация) или "warning" (предупреждение).

Чтобы извлечь флэш-сообщение из сессии, где оно хранится, и отобразить его на шаблоне, мы используем функцию get_flashed_messages().

get_flashed_messages(with_categories, category_filter)

Здесь,

  • with_categories : Необязательный кортеж параметров для упоминания категории (ошибка/информация/предупреждение)

  • category_filter : Необязательный параметр для фильтрации и отображения только определенных сообщений.

Простой пример, показывающий get_flashed_message() в файле Template:

{% with messages = get_flashed_messages() %}
   {% if messages %}
      {% for message in messages %}
         {{ message }}
      {% endfor %}
   {% endif %}
{% endwith %}

Использование метода flash() во Flask на практике

Здесь мы создадим простое Flask-приложение, которое будет выдавать флэш-сообщение - login successful (успешный вход), если пользователь ввел правильный пароль.

1) Кодирование файла приложения Flask

Здесь мы покажем простую форму, в которой вводится пароль. Если пароль правильный, то выводится флэш-сообщение.

from flask import Flask,render_template,request,redirect,flash
 
app = Flask(__name__)
 
@app.route('/form')
def form():
    return render_template('form.html')
 
@app.route('/login', methods = ['POST', 'GET'])
def login():
    if request.method == 'GET':
        return "Login via the login Form"
     
    if request.method == 'POST':
        password = request.form['password']
        if password == '123':
            #The following flash message will be displayed on successful login
            flash('Login successful')
            return render_template('success.html')
        else:
            return redirect('/form')

Здесь success.html является "следующим" шаблоном, так как сообщение будет появляться там.

Вот и все!!! давайте теперь закодируем шаблоны.

2) Кодирование шаблонов

form.html будет иметь вид:

<form action="/login" method = "POST">
   <p>password <input type = "text" name = "password" /></p>
   <p><input type = "submit" value = "Submit" /></p>
</form>

А также файл шаблона Success.html:

{% with messages = get_flashed_messages() %}
   {% if messages %}
      {% for message in messages %}
         {{ message }}
      {% endfor %}
   {% endif %}
{% endwith %}
 
<h2>User Authenticated</h2>

Обратите внимание, как мы использовали здесь функцию get_flashed_messages().

3) Реализация

Вот и все!!! Давайте теперь запустим сервер и проверим нашу веб-страницу

Нажмите "/form":

Форма

Введите 1234 и нажмите кнопку отправить

Вход в систему

И вот оно, наше флэш-сообщение прямо на экране.

Заключение

Вот и все по этому уроку, ребята! Надеюсь, вы получили достаточно знаний, чтобы использовать метод Flash в своих веб-приложениях. Ознакомьтесь с нашей статьей Flask Forms, чтобы узнать больше о формах.

Увидимся в следующей статье! Счастливого кодинга!!!

Методы класса (classmethod): нужны ли они? Приглашаем всех на бесплатный урок, где поговорим об особенностях ООП в python: о наследовании и миксинах. Рассмотрим ситуации, когда без classmethod не обойтись. Посмотрим на реализации в известных библиотеках.

- Зарегистрироваться на бесплатный урок

Комментарии (1)


  1. sdgsdgsdgwerwer
    14.10.2022 14:09

    Довольно доступная статья!