РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
567 of 643 menu

Класс Markup

Класс Markup применяется для создания строки, которую Flask и Jinja считают безопасным HTML. Обычные строки при выводе в шаблон экранируются: символы <, > и & заменяются на безопасные сущности. Обёртка Markup отключает это экранирование для конкретной строки. Первым параметром передаётся строка с HTML-кодом. Класс наследуется от обычной строки str, поэтому с ним работают все строковые методы.

Синтаксис

from markupsafe import Markup res = Markup(object)

Пример

Давайте сравним обычную строку и строку, обёрнутую в Markup:

from flask import Flask from markupsafe import Markup app = Flask(__name__) @app.route('/') def index(): plain = '<b>hello</b>' safe = Markup('<b>hello</b>') return plain + safe

Результат выполнения кода:

<b>hello</b><b>hello</b>

Как видите, обычная строка была экранирована, а обёрнутая в Markup - нет.

Пример

Давайте передадим безопасный HTML в шаблон:

from flask import Flask, render_template from markupsafe import Markup app = Flask(__name__) @app.route('/') def index(): text = Markup('<b>hello</b>') return render_template('index.html', text=text)

А в шаблоне выведем переменную:

<p>{{ text }}</p>

Результат выполнения кода:

<p><b>hello</b></p>

Если бы переменная была обычной строкой, тег b отобразился бы как текст.

Пример

Давайте создадим безопасный фрагмент через метод format, который есть у Markup:

from flask import Flask from markupsafe import Markup app = Flask(__name__) @app.route('/') def index(): template = Markup('<a href="/user/{}">{}</a>') res = template.format('abcde', 'user') return res

Результат выполнения кода:

<a href="/user/abcde">user</a>

Обратите внимание: значения, переданные в format, при этом экранируются, если не являются Markup.

Смотрите также

  • метод escape,
    который экранирует спецсимволы в строке
  • метод unescape,
    который снимает экранирование со строки
  • метод striptags,
    который удаляет теги из безопасной строки
  • функцию escape,
    которая экранирует HTML в обычной строке
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить