
В этом уроке мы узнаем как передавать флэш-сообщения с помощью метода 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 не обойтись. Посмотрим на реализации в известных библиотеках.
ссылка на оригинал статьи https://habr.com/ru/company/otus/blog/692820/
Добавить комментарий