Атрибут call
Атрибут call принадлежит классу Route и содержит
исходную функцию-обработчик, которую нужно вызвать при
совпадении запроса с маршрутом. Именно эта функция
вызывается Bottle после успешного сопоставления URL,
а её результат возвращается клиенту. Атрибут хранит
именно ту функцию, которая была передана в декоратор,
до применения обёрток и дополнительной обработки.
Значение атрибута call доступно только для чтения
и устанавливается автоматически в момент регистрации
маршрута. Обращаться к нему можно через объект
маршрута, полученный из приложения.
Синтаксис
route.call
Пример
Давайте создадим маршрут и выведем его функцию-обработчик
через атрибут call:
from bottle import Bottle
app = Bottle()
@app.route('/')
def index():
return 'hello'
route = app.routes[0]
print(route.call)
print(route.call.__name__)
Результат выполнения кода:
<function index at 0x...>
"index"
Пример
Давайте вызовем функцию-обработчик напрямую через
атрибут call:
from bottle import Bottle
app = Bottle()
@app.route('/user')
def user():
return 'article'
route = app.routes[0]
res = route.call()
print(res)
Результат выполнения кода:
"article"
Пример
Давайте проверим, что атрибут call хранит именно
исходную функцию, переданную в декоратор:
from bottle import Bottle
app = Bottle()
def handler():
return 'abcde'
app.route('/abcde', callback=handler)
route = app.routes[0]
print(route.call is handler)
Результат выполнения кода:
True