Атрибут catchall
Атрибут catchall применяется к приложению
Bottle и позволяет назначить функцию,
которая будет вызвана при запросе к адресу,
не совпавшему ни с одним маршрутом.
По умолчанию catchall равен None,
и в этом случае Bottle возвращает стандартную
ошибку 404. Если присвоить атрибуту функцию,
она получит объект запроса и должна вернуть ответ.
Атрибут полезен, когда нужно отдавать собственную страницу 404 или когда все неизвестные адреса должны обрабатываться одним динамическим маршрутом.
Синтаксис
app.catchall = handler
Здесь handler - функция, принимающая
объект запроса request и возвращающая ответ.
Пример
Давайте назначим собственный обработчик для всех неизвестных адресов:
from bottle import Bottle
app = Bottle()
@app.route('/')
def index():
return 'hello'
def not_found(request):
return 'page not found'
app.catchall = not_found
Результат выполнения кода для адреса /unknown:
page not found
Пример
Давайте вернём из обработчика объект
ответа HTTPResponse с кодом 404:
from bottle import Bottle, HTTPResponse
app = Bottle()
@app.route('/')
def index():
return 'hello'
def not_found(request):
return HTTPResponse(
body='nothing here',
status=404
)
app.catchall = not_found
Результат выполнения кода для адреса /unknown:
nothing here