Функция format_html

Функция format_html применяется для создания HTML-строк с безопасной подстановкой динамических данных. Она автоматически экранирует специальные символы в переданных аргументах, предотвращая XSS-атаки, но при этом позволяет вставлять разметку, которая уже помечена как безопасная с помощью функции mark_safe. Функция принимает строку с плейсхолдерами в формате {} и произвольное количество аргументов для подстановки.

Синтаксис

pythonfrom django.utils.html import format_html

format_html(format_string, *args, **kwargs)

Пример

Создадим HTML-ссылки с динамическими данными:

pythonfrom django.utils.html import format_html

user_name = "John Doe"
user_id = 123
link = format_html(
  '<a href="/users/{}/">{}</a>',
  user_id,
  user_name
)
print(link)

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

python"<a href="/users/123/">John Doe</a>"

Пример

Используем функцию для создания структурированного HTML с несколькими подстановками:

pythonfrom django.utils.html import format_html

article_title = "My Article"
author = "Admin"
date = "2026-09-07"

res = format_html(
  '<div class="article"><h1>{}</h1><p>Author: {}</p><p>Date: {}</p></div>',
  article_title,
  author,
  date
)
print(res)

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

python"<div class="article"><h1>My Article</h1><p>Author: Admin</p><p>Date: 2026-09-07</p></div>"

Пример

Используем функцию с помеченной безопасной разметкой и автоматическим экранированием:

pythonfrom django.utils.html import format_html, mark_safe

user_input = "<script>alert('XSS')</script>"
allowed_html = mark_safe("<b>bold text</b>")

res = format_html(
  '<p>User input: {}</p><p>Allowed HTML: {}</p>',
  user_input,
  allowed_html
)
print(res)

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

python"<p>User input: <script>alert('XSS')</script></p><p>Allowed HTML: <b>bold text</b></p>"

Как видно из результата, опасный скрипт был экранирован, а допустимый HTML-тег b был вставлен как есть, поскольку был помечен как безопасный.

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

  • функция format_html_join,
    которая объединяет итерируемый объект в HTML-строку
  • функция mark_safe,
    которая помечает строку как безопасную для вывода
  • класс SafeString,
    который используется для безопасных строк
  • функция escape,
    которая экранирует HTML-спецсимволы