【问题标题】:Passing arguments containing slashes to bottle将包含斜杠的参数传递给瓶子
【发布时间】:2013-11-12 05:36:46
【问题描述】:

我需要通过 url 中的最后一个参数将包含斜杠的字符串传递给我的 Bottlepy 服务器,但由于斜杠被视为参数分隔符,服务器不会按我需要的方式处理它。 我找到了一个关于烧瓶如何支持这一点的页面: http://flask.pocoo.org/snippets/76/ 但是还没有在瓶中找到类似的解决方案

【问题讨论】:

标签: python bottle


【解决方案1】:

听起来你想要:path

:path 匹配所有字符,包括 a 中的斜线字符 非贪婪方式,可用于匹配多个路径段。

例如,

@route('/root/<path:thepath>')
def callback(thepath):
    # `thepath` is everything after "/root/" in the URI.
    ...

编辑:响应 OP 的评论(如下),这是一个适用于我的 sn-p:

from bottle import Bottle, route

app = Bottle()

@app.route('/add/<uid>/<collection>/<group>/<items:path>')
def add(uid, collection, group, items):
    return 'your uri path args: {}, {}, {}, {}\n'.format(uid, collection, group, items)

app.run(host='0.0.0.0', port=8081)

产量:

% ~>curl 'http://127.0.0.1:8081/add/1/2/3/and/now/a/path'
your uri path args: 1, 2, 3, and/now/a/path

【讨论】:

  • 嗯,这就是我提供的链接中描述的 Flask 解决方案,但在瓶中它给了我这个错误: Traceback(最近一次调用最后):文件“myfile.py”,第 105 行,在 ...文件“/Library/Python/2.7/site-packages/bottle-0.11.6-py2.7.egg/bottle.py”,第328行,添加掩码,in_filter,out_filter = self.filters [mode](conf) KeyError: 'items' [Finished in 0.1s with exit code 1]
  • 好的。我需要查看您的代码以进一步帮助您。你是如何定义路线的?
  • @route('/add/&lt;uid&gt;/&lt;collection&gt;/&lt;group&gt;/&lt;items:re:.+&gt;') def add(uid, collection, group, items):
  • 这不应该是一行stackoverflow似乎正在删除空格
  • 谢谢。确实需要查看更多代码来帮助您,但是我拿了您在上面粘贴的两行并尝试了它们,它们对我来说很好用。瓶 0.11.6。我将编辑我的答案以包含我使用的代码。无论如何,这听起来像是您找到了解决方法,所以您已准备就绪。干杯。
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 2016-06-13
  • 1970-01-01
  • 2020-04-03
  • 1970-01-01
  • 1970-01-01
  • 2018-02-20
相关资源
最近更新 更多