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

Метод join

Метод join применяется к экземпляру класса Markup и объединяет последовательность элементов в одну строку разметки. Первым параметром передаётся итерируемый объект с элементами, которые нужно соединить. В отличие от обычного строкового метода join, все неэкранированные строки автоматически экранируются, что защищает от XSS-атак. Уже готовые объекты Markup вставляются без изменений.

Синтаксис

Markup(separator).join(iterable)

Пример

Давайте объединим несколько фрагментов разметки с помощью запятой:

from flask import Flask, Markup app = Flask(__name__) @app.route('/') def index(): items = [ Markup('<b>abcde</b>'), Markup('<i>hello</i>'), Markup('<u>user</u>') ] res = Markup(', ').join(items) return res

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

<b>abcde</b>, <i>hello</i>, <u>user</u>

Пример

Давайте передадим в метод список обычных строк и посмотрим, как сработает автоматическое экранирование:

from flask import Flask, Markup app = Flask(__name__) @app.route('/') def index(): items = ['<b>abcde</b>', 'hello', '<i>user</i>'] res = Markup('<br>').join(items) return res

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

<b>abcde</b><br>hello<br><i>user</i>

Как видим, обычные строки были экранированы, а разделитель Markup('<br>') вставился как готовая разметка.

Пример

Давайте смешаем в одной последовательности объекты Markup и обычные строки, чтобы увидеть разницу в обработке:

from flask import Flask, Markup app = Flask(__name__) @app.route('/') def index(): items = [ Markup('<b>abcde</b>'), '<i>hello</i>', Markup('<u>user</u>') ] res = Markup(' | ').join(items) return res

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

<b>abcde</b> | <i>hello</i> | <u>user</u>

Пример

Давайте используем метод join вместе с генератором для построения списка ссылок:

from flask import Flask, Markup app = Flask(__name__) @app.route('/') def index(): users = ['abcde', 'hello', 'user'] links = Markup('</li><li>').join( Markup('<a href="/user/%s">%s</a>') % (u, u) for u in users ) res = Markup('<ul><li>') + links + Markup('</li></ul>') return res

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

<ul><li><a href="/user/abcde">abcde</a></li><li><a href="/user/hello">hello</a></li><li><a href="/user/user">user</a></li></ul>

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

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