Тест escaped
Тест escaped применяется к значению в шаблоне
Jinja и возвращает True, если значение уже
экранировано, и False в противном случае.
Обычно используется вместе с фильтром escape
или тегом autoescape для проверки состояния
безопасности строки.
Синтаксис
{{ value is escaped }}
Пример
Давайте проверим обычную строку, которая не была экранирована:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', text='abcde')
Шаблон для проверки:
<p>{{ text is escaped }}</p>
Результат выполнения кода:
<p>False</p>
Пример
Давайте применим фильтр escape к строке
и проверим результат:
<p>{{ '<b>hello</b>' | escape is escaped }}</p>
Результат выполнения кода:
<p>True</p>
Пример
Давайте используем тест escaped вместе с
условием if для вывода разного текста:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', text='<b>hello</b>')
Шаблон с проверкой:
{% if text is escaped %}
<p>already escaped</p>
{% else %}
<p>{{ text | escape }}</p>
{% endif %}
Результат выполнения кода:
<p><b>hello</b></p>