Ответ 1
На основе новой бутылки (v0.10) используйте фильтр re:
@bottle.route("/<url:re:.+>")
Вы можете сделать это со старыми параметрами:
@bottle.route("/:url#.+#")
Использование бутылки Sehttp://bottlepy.org/docs/dev/routing.html#wildcard-filters
Я хотел бы принять любой URL-адрес, а затем сделать что-то с URL-адресом.
например.
@bottle.route("/<url:path>")
def index(url):
return "Your url is " + url
Это сложно, потому что в них есть косые черты, а Bottle разбивается на косые черты.
На основе новой бутылки (v0.10) используйте фильтр re:
@bottle.route("/<url:re:.+>")
Вы можете сделать это со старыми параметрами:
@bottle.route("/:url#.+#")
Я думаю, что вы (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)
Ура!
@bottle.route("/hello/:myurl")
def something(myurl):
print myurl
return "Your url was %s" % myurl
Должно работать просто отлично
Затем я написал регулярное выражение в самой функции.
Или вы можете сделать это с помощью нового фильтра, но для этого вам нужно написать функцию фильтра и добавить его в приложение.
В Bottle 0.12.9 я сделал это для достижения дополнительных динамических маршрутов:
@bottle.route("/<url:re:.*>")
def index(url):
return "Your url is " + url