15

使用 Bottle Sehttp://bottlepy.org/docs/dev/routing.html#wildcard-filters

我想接受任何 url,然后对 url 做一些事情。

例如

@bottle.route("/<url:path>")
def index(url):
  return "Your url is " + url

这很棘手,因为 URL 中有斜杠,而 Bottle 用斜杠分割。

4

4 回答 4

18

基于新的 Bottle (v0.10),使用 re 过滤器:

@bottle.route("/<url:re:.+>")

您也可以使用旧参数来做到这一点:

@bottle.route("/:url#.+#")
于 2011-11-18T21:48:46.343 回答
9

我认为你(OP)一开始就走在正确的轨道上。 <mypath:path>应该做的伎俩。

我刚用 0.10 瓶试了一下,效果很好:

~>python test.py >& /dev/null &
[1] 37316
~>wget -qO- 'http://127.0.0.1:8090/hello/cruel/world'
Your path is: /hello/cruel/world

这是我的代码。当你在你的系统上运行它时会发生什么?

from bottle import route, run

@route('<mypath:path>')
def test(mypath):
    return 'Your path is: %s\n' % mypath

run(host='localhost', port=8090)

干杯!

于 2012-03-30T03:03:36.887 回答
1

在 Bottle 0.12.9 中,我这样做是为了实现可选的动态路由:

@bottle.route("/<url:re:.*>")
def index(url):
  return "Your url is " + url
于 2016-04-27T13:25:58.693 回答
0
@bottle.route("/hello/:myurl")
def something(myurl):
    print myurl
    return "Your url was %s" % myurl

应该工作得很好

然后我会将正则表达式写入函数本身。

或者你可以用一个新的过滤器来做到这一点,但要做到这一点,你必须编写一个过滤器函数并将其添加到应用程序中。

于 2011-11-17T17:55:40.130 回答