2、创建Bottle应用

  上个教程我们已经简单地创建了一个web项目,在配置路由的时候route()函数有一个app参数我们并没有用到,它默认使用的是default_app()。但是我们的网站可能包含很多应用,如博客系统,投票系统,这个时候就要使用Bottle对象来创建多个app了。
1.创建一个app

from bottle import Bottle, run

root = Bottle()
@root.route('/hello')
def index():
    return 'Hello World!'

if __name__ == '__main__':
    run(app=root, host='localhost', port=8080, debug=True)
  • Bottle对象的成员:hook(钩子)

我的理解hook(钩子)就是在特定时间运行的函数。目前Bottle实现了三个hook它们分别是before_request、after_request、app_reset。before_request在每个请求之前执行一次,after_request在每个请求之后执行一次,app_reset每当调用Bottle.reset()时调用。

成员 描述
add_hook(name, func) 将函数附加到hook上。
remove_hook(name, func) 删除已附加到hook上的函数
trigger_hook(_Bottle__name, *args, **kwargs) 触发hook并返回结果列表。
hook(name) 一个装饰器,可以将被装饰的函数附加到hook上。是装饰器版的add_hook()。
reset(route=None) 重置所有路由并清除所有缓存。如果给定ID或route对象,则只影响该特定路由。
from bottle import Bottle, run

root = Bottle()

@root.hook("before_request")
def hook1():
    print("hook1 has run before request")

@root.route('/hello')
def index():
    return 'Hello World!'


if __name__ == '__main__':
    run(app=root, host='localhost', port=8080, debug=True)

2、创建Bottle应用_第1张图片

  • Bottle对象的成员:mount(prefix, app, **options)

功能是将应用程序挂载到特定的URL前缀。
参数:

  1. prefix:前缀path或挂载点。
  2. app:要挂载的app

来自父应用程序的插件不能应用于已挂载的子应用程序的路由。如果您需要子应用程序中的插件,请分别安装它们。
虽然可以在前缀path中使用路径通配符,但强烈建议不要使用。
如果您想通过/prefix和/prefix/访问子应用程序的根,请考虑添加一条重定向到父应用程序的307路由。

from bottle import Bottle

root = Bottle()
blog = Bottle()
root.mount('/blog', blog)   # 将blog应用挂载到root中

@root.route('/hello')
def index():
    return 'Hello World!'

@blog.route('/hello')
def hello():
    return 'Hello Blog!'

if __name__ == '__main__':
    root.run(host='localhost', port=8080, debug=True)

虽然配置了两个/hello,但这两个/hello实际的url是不同的
2、创建Bottle应用_第2张图片
2、创建Bottle应用_第3张图片

  • Bottle对象的成员:merge(routes)
    将另一个Bottle应用程序的路由或者将Route对象列表合并到此应用程序中。
  • Bottle对象的成员:插件
成员 描述
install(plugin) 将插件添加到插件列表中,并准备将其应用于此应用程序的所有路由。插件可以是简单的装饰器,也可以是实现插件API的对象。
uninstall(plugin) 卸载插件。传递一个实例来删除特定的插件,传递一个类型对象来删除与该类型匹配的所有插件,传递一个字符串来删除具有匹配name属性的所有插件,传递一个True来删除所有插件。返回已删除插件的列表。

你可能感兴趣的:(Bottle)