Функция format_html
Функция format_html применяется для создания HTML-строк
с безопасной подстановкой динамических данных. Она автоматически
экранирует специальные символы в переданных аргументах,
предотвращая XSS-атаки, но при этом позволяет вставлять
разметку, которая уже помечена как безопасная с помощью
функции mark_safe. Функция принимает строку с
плейсхолдерами в формате {} и произвольное количество
аргументов для подстановки.
Синтаксис
from django.utils.html import format_html
format_html(format_string, *args, **kwargs)
Пример
Создадим HTML-ссылки с динамическими данными:
from 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)
Результат выполнения кода:
"<a href="/users/123/">John Doe</a>"
Пример
Используем функцию для создания структурированного HTML с несколькими подстановками:
from 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)
Результат выполнения кода:
"<div class="article"><h1>My Article</h1><p>Author: Admin</p><p>Date: 2026-09-07</p></div>"
Пример
Используем функцию с помеченной безопасной разметкой и автоматическим экранированием:
from 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)
Результат выполнения кода:
"<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-спецсимволы