Как разметить флэш-сообщение в Flask?Python

Программы на Python
Anonymous
Как разметить флэш-сообщение в Flask?

Сообщение Anonymous »

Я запускал приложение Flask, используя Python 3.9.13, Flask 1.1.2, Jinja2 2.11.3 и MarkupSafe 1.1.1, используя Redis (3.5.3) в качестве хранилища сеансов. Когда я создал флеш-сообщение с помощью

Код: Выделить всё

flash(Markup('This[/b] is a [b]WARNING[/b].'),category="warning")
Flask отобразится (как и ожидалось)
Это ПРЕДУПРЕЖДЕНИЕ >.
с выбранным цветом фона, связанным с предупреждающими флэш-сообщениями.
Я пытаюсь переместить приложение для Python 3.12.4, Flask 3.0.3 и MarkupSafe 2.1.5 (Jinja2 есть в версии 3.1.4, но Flask перешел на использование MarkupSafe напрямую, вместо импорта из Jinja2, поэтому я не думаю, что это актуально, Redis это 5.0.8). Однако, когда я пытаюсь перенаправить на страницу с этим набором флэш-сообщений, приложение неожиданно выходит из строя с внутренней ошибкой сервера.
Покопавшись глубоко в Flask, я вижу, что оно выдает ошибку. исключение Кодирование объектов типа Markup не поддерживается, когда он обрабатывает процесс_ответ и пытается сохранить сеанс https://github.com/pallets/flask/blob/m ... p.py#L1301 , и, похоже, это вызвано объектом разметки в списке _flashes. Если преобразовать разметку в строку, это не приведет к сбою, но сообщение будет отображаться как:

Код: Выделить всё

This[/b] is a [b]WARNING[/b].
(Он отображается с правильным цветом фона.)
Есть ли способ отформатировать флэш-сообщение в текущем Flask, как мы это делали в более ранних версиях или я делаю что-то не так?

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-in-flask

Вернуться в «Python»