Сообщить об ошибке.

Класс Markup() модуля flask в Python

Помечает HTML как безопасный для передачи в шаблон

Синтаксис:

import flask

flask.Markup(base='', encoding=None, errors='strict')

Параметры:

  • base='' - строка HTML-разметки,
  • encoding=None - кодировка,
  • errors='strict' - обработчик ошибок кодировки.

Возвращаемое значение:

  • экземпляр строки с HTML-разметкой.

Описание:

Класс Markup() модуля flask помечает строку с HTML-разметкой как безопасный без экранирования. Чтобы экранировать текст, необходимо использовать метод класса Markup.escape().

>>> Markup("Hello, <em>World</em>!")
# Markup('Hello, <em>World</em>!')
>>> Markup(42)
# Markup('42')
>>> Markup.escape("Hello, <em>World</em>!")
# Markup('Hello &lt;em&gt;World&lt;/em&gt;!')

При этом в шаблоне не нужно отменять экранирование (например {{ value|safe }}) для переменной, помеченной классом Markup() как безопасной для вставки в шаблон.

Класс Markup() реализует интерфейс __html__(), используемый некоторыми фреймворками. Передача объекта, реализующего __html__(), обернет вывод этого метода, отметив его безопасным.

class Foo:
    def __html__(self):
        return '<a href="/foo">foo</a>'

>>> Markup(Foo())
# Markup('<a href="/foo">foo</a>')

Класс Markup() представляет собой подкласс str. Он имеет те же методы, но не принимает аргументов и возвращает экземпляр HTML-разметки.

>>> Markup("<em>%s</em>") % ("foo & bar",)
# Markup('<em>foo &amp; bar</em>')
>>> Markup("<em>Hello</em> ") + "<foo>"
# Markup('<em>Hello</em> &lt;foo&gt;')

Методы класса flask.Markup().

Markup.escape():

Метод класса Markup.escape() экранирует строку, переданную в конструктор класса. Вызывает функцию flask.escape() и гарантирует, что для подклассов будет возвращен правильный тип.

Markup.striptags():

Метод Markup.striptags() сначала преобразует экранированную разметку обратно в текстовую строку, а потом удаляет теги и нормализует пробелы до одиночных.

Markup("Main &raquo;        <em>About</em>").striptags()
'Main » About'

Markup.unescape():

Метод Markup.unescape() преобразует экранированную разметку обратно в текстовую строку. При этом объекты HTML заменяются символами, которые они представляют.

>>> Markup("Main &raquo; <em>About</em>").unescape()
# 'Main » <em>About</em>'