我在 BottlePy 中有以下钩子(Hook):

@bottle_app.hook('before_request')
def update_session():
    # do stuff
    return

还有一些路线:
@bottle_app.route('/')
def index():
    return render('index')

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

update_session() 中,如何确定调用的是哪条路由?

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

最佳答案

该请求同时具有 bottle.routeroute.handle 条目,两者都包含相同的值:

from bottle import request

print request['bottle.route']

这没有记录;我必须找到它 in the bottle.py source 。该值是一个 Route 实例;它同时具有 .name.rule 属性,您可以检查以确定匹配哪个路由。
if request['bottle.route'].rule == '/':
    # matched the `/` route.

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

关于python - BottlePy - 如何从钩子(Hook)中找到当前路线?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14499466/

10-12 05:31