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

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

Экранирование строки для безопасной вставки в HTML

Синтаксис:

import jinja2

line = jinja2.Markup([string])

Параметры:

  • string - объект строки.

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

Описание:

Класс Markup() модуля jinja2 возвращает строку, готовую к безопасной вставке в документ HTML или XML, т.к. она была экранирована или была помечена как безопасная.

Передача объекта конструктору jinja2.Markup() преобразует его в текст и обертывает, чтобы пометить его как безопасный без экранирования. Чтобы экранировать простой текст, используйте вместо этого метод класса Markup.escape().

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

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

>>> import jinja2
>>> class Foo:
...     def __html__(self):
...         return '<a href="/foo">foo</a>'
...
>>> jinja2.Markup(Foo())
# Markup('<a href="/foo">foo</a>')

Это подкласс текстового типа (str в Python 3). Он имеет те же методы, что и тип str, но все методы избегают своих аргументов и возвращают экземпляр Markup.

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

Методы объекта Markup.

Markup.escape(s):

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

Markup.striptags():

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

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

Markup.unescape():

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

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