你如何接受Python Bottle服务器中的任何URL?

时间:2011-11-17 17:31:27

标签: python bottle

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

我想接受任何网址,然后用网址做点什么。

e.g。

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

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

4 个答案:

答案 0 :(得分:16)

基于新瓶(v0.10),使用重新过滤器:

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

您也可以使用旧参数执行此操作:

@bottle.route("/:url#.+#")

答案 1 :(得分:8)

我认为你(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)

干杯!

答案 2 :(得分:0)

@bottle.route("/hello/:myurl")
def something(myurl):
    print myurl
    return "Your url was %s" % myurl

应该可以正常工作

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

或者您可以使用新的过滤器,但要做到这一点,您必须编写过滤器功能并将其添加到应用程序。

答案 3 :(得分:0)

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

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