Функция defined
Функция defined применяется внутри шаблонов SimpleTemplate
для проверки того, существует ли переменная в контексте шаблона.
Первым параметром передаётся имя переменной в виде строки.
Функция возвращает True, если переменная определена,
и False в противном случае. Это особенно полезно,
когда шаблон используется в разных маршрутах и не все переменные
могут быть переданы. Функция доступна внутри выражений
{{ ... }} и в блоках кода % ....
Синтаксис
defined(name)
Здесь name - строка с именем проверяемой переменной.
Пример
Давайте создадим шаблон, который проверяет наличие переменной
user и выводит разные сообщения в зависимости от результата:
% if defined('user'):
Hello, {{ user }}!
% else:
Hello, guest!
% end
Теперь передадим переменную user из приложения:
from bottle import Bottle, template
app = Bottle()
@app.route('/')
def index():
return template('views/index', user='abcde')
Результат выполнения кода:
Hello, abcde!
Пример
Если переменная не передана в шаблон, функция defined
вернёт False, и сработает ветка else.
Запустим тот же шаблон без переменной user:
from bottle import Bottle, template
app = Bottle()
@app.route('/')
def index():
return template('views/index')
Результат выполнения кода:
Hello, guest!
Пример
Функцию defined можно использовать и внутри выражения
{{ ... }} для условного вывода значения переменной:
{{ 'Hello, ' + user if defined('user') else 'Hello, guest' }}
Передадим переменную user со значением 'abcde':
from bottle import Bottle, template
app = Bottle()
@app.route('/')
def index():
return template('views/greet', user='abcde')
Результат выполнения кода:
Hello, abcde
Смотрите также
-
тег
if,
который выполняет ветку кода по условию -
тег
else,
который задаёт альтернативную ветку условия -
функцию
get,
которая возвращает значение переменной или значение по умолчанию -
функцию
setdefault,
которая задаёт значение переменной, если она не определена