Тест callable
Тест callable применяется внутри Jinja-шаблонов
для проверки того, можно ли вызвать переданное
значение как функцию. Он возвращает True,
если объект является вызываемым, и False
в противном случае. Тест принимает один параметр -
значение, которое нужно проверить.
Синтаксис
{% if value is callable %}
...
{% endif %}
Пример
Давайте проверим обычную функцию на вызываемость:
from flask import Flask, render_template
app = Flask(__name__)
def greet():
return 'hello'
@app.route('/')
def index():
return render_template('index.html', func=greet)
Шаблон для проверки:
{% if func is callable %}
<p>callable</p>
{% else %}
<p>not callable</p>
{% endif %}
Результат выполнения кода:
<p>callable</p>
Пример
Давайте проверим строку и число на вызываемость:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', text='abcde', num=123)
Шаблон для проверки:
{% if text is callable %}
<p>text callable</p>
{% else %}
<p>text not callable</p>
{% endif %}
{% if num is callable %}
<p>num callable</p>
{% else %}
<p>num not callable</p>
{% endif %}
Результат выполнения кода:
<p>text not callable</p>
<p>num not callable</p>
Пример
Давайте проверим встроенную функцию и класс на вызываемость:
from flask import Flask, render_template
app = Flask(__name__)
class User:
pass
@app.route('/')
def index():
return render_template('index.html', fn=len, cls=User)
Шаблон для проверки:
{% if fn is callable %}
<p>fn callable</p>
{% endif %}
{% if cls is callable %}
<p>cls callable</p>
{% endif %}
Результат выполнения кода:
<p>fn callable</p>
<p>cls callable</p>