bottle.py URL路由&反向howto?

时间:2013-02-28 09:27:41

标签: python url-routing bottle

样本Bottle.py代码:

@route('/show_<name>')
def show(name):
   return ''

我的问题是:

  1. 给定一个URL,我们如何获得视图功能?例如。网址为/show_magic,我需要知道show()函数负责此请求网址

  2. 给定路由(不是路由器!!)和参数,如何获取URL?例如我需要一个名为reverse的函数reverse(default_app().routes[0], name='me') == '/show_me'

2 个答案:

答案 0 :(得分:6)

您可能想要考虑命名路线

@route('/show_<item_name>', name='item_show')
def show(item_name):
   return ''

现在给出了路由名称和params如何获取URL?我们使用get_url

get_url('item_show', item_name='my_item')

http://nongraphical.com/2012/08/using-bottle-py-in-production/

答案 1 :(得分:3)

关于第一个问题,请使用Bottle.match。给定path(即'/show_magic')和methodGETPOST或其他),以下内容将返回包含Route的元组对象及其参数:

default_app().match({'PATH_INFO': path, 'REQUEST_METHOD': method})

调用的函数是Route对象的callbackcall属性。

对于第二个问题,请使用路由器的build方法和路由rule以及kwargs:

default_app().router.build(route.rule, name='me')

这似乎没有记录,但它确实有效。