使用Bottle.py进行动态路由

时间:2014-07-30 17:53:44

标签: python bottle

我对Bottle框架非常陌生,在尝试使用动态路由提供静态文件时很难理解我做错了什么。

当我使用确切的值时,以下对我来说效果很好:

@route('/files/somefile.txt')
def serve_somefile():
   return static_file('somefile.txt', root = '/directory/to/files')

但是,我正在尝试根据documentation创建一个动态路由来为/ files目录中的任何文件提供服务。

这对我不起作用:

@route('/files/<filename>')
def serve_somefile(filename):
   return static_file(filename, root= '/directory/to/files')

我收到了来自服务器的404响应,尽管它与上面的例子相比收到了相同的GET请求。

有谁可以指出我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

您是否尝试将参数指定为路径(如示例所示):

@route('/files/<filename:path>')
def serve_somefile(filename):
    return static_file(filename, root= '/directory/to/files')

答案 1 :(得分:0)

您的代码中没有任何内容对我来说是错误的。 (我同意@Ashalynd你应该在这里使用:path。)

事实上,我尝试运行您的代码,并且两个案例都有效。

也许您正在使用旧版本的Bottle?我在0.12.7。

-

这是我的完整示例,如果它有帮助:

import bottle
from bottle import route, static_file

@route('/files/<filename>')
def serve_somefile(filename):
    return static_file(filename, root= '/Users/ron/Documents/so/25043651')

bottle.run(host='0.0.0.0', port=8080)