我在 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.route
和 route.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/