在python bottle框架下安装路由处理程序的示例如下:
from bottle import Bottle, run
app = Bottle()
@app.route('/hello')
def hello():
return "Hello World!"
run(app, host='localhost', port=8080)
上面的代码将“localhost:8080 / hello”路由到显示“Hello World!”的页面(由函数hello处理)。 我想知道这个安装过程是如何完成的? 框架如何知道函数“hello”使用“app.route”作为其装饰器,从而将传入的请求分派给该函数?
答案 0 :(得分:2)
只要你向route
装饰者提供路径(或多个路径),函数的名称就不代表任何东西,但。
Route
构造函数的参数包括callback
和rule
,其中callback
是您的函数,rule
是路径字符串。
如果提供了一个或多个路径,则Bottle将为每个路径创建一个Route
实例。
如果您不提供route
的单一路径,则功能名称仅开始发挥作用。然后,Bottle会从函数的签名生成可能的路径(请参阅source yieldroutes
),并为每个签名创建一个Route
实例。
Bottle.route
's source的相关部分:
for rule in makelist(path) or yieldroutes(callback):
for verb in makelist(method):
verb = verb.upper()
route = Route(self, rule, verb, callback, name=name,
plugins=plugins, skiplist=skiplist, **config)
self.add_route(route)