Метод Flask flash() — Как передавать флэш-сообщения в Flask?

от автора

В этом уроке мы узнаем как передавать флэш-сообщения с помощью метода 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/


Комментарии

Добавить комментарий

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