BottlePy - 如何从钩子中找到当前路线?

Xen*_*non 3 python bottle python-3.x

我在BottlePy中有以下钩子:

@bottle_app.hook('before_request')
def update_session():
    # do stuff
    return
Run Code Online (Sandbox Code Playgroud)

还有一些路线:

@bottle_app.route('/')
def index():
    return render('index')

@bottle_app.route('/example')
def example():
    return render('example')
Run Code Online (Sandbox Code Playgroud)

从内部update_session(),我如何确定调用哪条路线?

我查看了文档无济于事,但这肯定有可能吗?

Mar*_*ers 7

请求同时包含a bottle.route和a route.handle条目,两者都包含相同的值:

from bottle import request

print request['bottle.route']
Run Code Online (Sandbox Code Playgroud)

这没有记录; 我不得不bottle.py源头找到它.值是一个Route实例; 它有一个.name和一个.rule属性,您可以检查以确定匹配的路线.

if request['bottle.route'].rule == '/':
    # matched the `/` route.
Run Code Online (Sandbox Code Playgroud)

对于您的具体示例,这可能是过度的,因为您只匹配简单路径,但对于具有正则表达式规则的更复杂规则,这比尝试匹配request.path属性更有效(但最好给出您的路由name值).

  • 您可以认为此API稳定.它没有记录,因为我计划将``request.route``作为速记实现但却忘记了. (2认同)