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

Функция conditional_escape

Функция conditional_escape применяется к строке и возвращает экранированную версию, если строка не помечена как безопасная. Функция проверяет, является ли переданный объект экземпляром SafeString или имеет атрибут __html__. Если да, то объект возвращается без изменений. В противном случае выполняется экранирование специальных символов HTML: &, <, >, " и '.

Функция особенно полезна при работе с шаблонами и формировании HTML-контента, когда необходимо избежать двойного экранирования уже безопасных данных.

Синтаксис

conditional_escape(value)

Параметры

Функция принимает один обязательный параметр:

  • value - строка или объект, который требуется проверить на безопасность и при необходимости экранировать.

Возвращает экранированную строку или исходный объект, если он уже безопасен.

Пример . С обычной строкой

Рассмотрим базовый пример использования функции conditional_escape с обычной строкой, содержащей HTML-теги:

from django.utils.html import conditional_escape user_input = "<script>alert('hello')</script>" res = conditional_escape(user_input) print(res)

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

"<script>alert('hello')</script>"

Пример . С безопасной строкой

Если строка уже помечена как безопасная с помощью функции mark_safe, conditional_escape не будет её экранировать:

from django.utils.html import conditional_escape, mark_safe safe_html = mark_safe("<strong>Hello World</strong>") res = conditional_escape(safe_html) print(res)

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

"<strong>Hello World</strong>"

Пример . Использование в шаблоне

Функция часто используется при ручном формировании HTML-контента для предотвращения XSS-атак:

from django.utils.html import conditional_escape user_name = "John & Jane" safe_name = conditional_escape(user_name) html_output = f"<div>Welcome, {safe_name}!</div>" print(html_output)

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

"<div>Welcome, John & Jane!</div>"

Пример . С числами и другими типами

Функция корректно обрабатывает не только строки, но и другие типы данных, преобразуя их в строки перед экранированием:

from django.utils.html import conditional_escape number = 123 boolean = True none_value = None res1 = conditional_escape(number) res2 = conditional_escape(boolean) res3 = conditional_escape(none_value) print(res1) print(res2) print(res3)

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

"123" "True" "None"

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

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