import jinja2 line = jinja2.Markup([string])
string
- объект строки.Markup
.Класс 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 <em>World</em>!')
Класс реализует интерфейс __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 & bar</em>') >>> jinja2.Markup('<em>Hello</em> ') + '<foo>' # Markup('<em>Hello</em> <foo>')
Markup
.Markup.escape(s)
:Метод класса Markup.escape()
экранирует строку. Вызывает фильтр escape()
и гарантирует, что для подклассов будет возвращен правильный тип.
Markup.striptags()
:Метод класса Markup.striptags()
вызывает метод Markup.unescape()
, удаляет теги и нормализует множественные пробелы до одиночных пробелов.
>>> import jinja2 >>> jinja2.Markup('Main » <em>About</em>').striptags() # 'Main » About'
Markup.unescape()
:Метод Markup.escape()
преобразует экранированную разметку обратно в текстовую строку. Метод заменяет HTML-объекты символами, которые они представляют.
>>> import jinja2 >>> jinja2.Markup('Main » <em>About</em>').unescape() # 'Main » <em>About</em>'