bottle.py URL 路由与反向怎么用?
下面是一个Bottle.py的示例代码:
@route('/show_<name>')
def show(name):
return ''
我有两个问题:
给定一个网址,我们怎么找到对应的处理函数?比如说,网址是
/show_magic
,我想知道哪个show()
函数负责处理这个网址的请求。给定一个路由(不是Router哦!)和一些参数,怎么得到网址?比如,我需要一个叫做 reverse 的函数,能够让
reverse(default_app().routes[0], name='me') == '/show_me'
。
2 个回答
6
你可能想考虑使用命名路由。
@route('/show_<item_name>', name='item_show')
def show(item_name):
return ''
现在,给定路由名称和参数,怎么获取URL呢?我们使用get_url。
get_url('item_show', item_name='my_item')
http://nongraphical.com/2012/08/using-bottle-py-in-production/
3
对于你的第一个问题,可以使用 Bottle.match
。给定一个 path
(比如 '/show_magic'
)和一个 method
(比如 GET
或 POST
),下面的代码会返回一个包含 Route
对象及其参数的元组:
default_app().match({'PATH_INFO': path, 'REQUEST_METHOD': method})
这里调用的是 Route
对象的 callback
或 call
属性。
对于你的第二个问题,可以使用路由器的 build
方法,结合路由的 rule
和一些参数(kwargs):
default_app().router.build(route.rule, name='me')
这个方法似乎没有文档说明,但它是可以用的。