使用Bottle.py进行动态路由
我刚开始接触Bottle框架,想用动态路由来提供静态文件,但总是搞不清楚自己哪里出错了。
当我使用固定的值时,下面的代码运行得很好:
@route('/files/somefile.txt')
def serve_somefile():
return static_file('somefile.txt', root = '/directory/to/files')
不过,我想创建一个动态路由,能够根据文档中的说明,从/files目录中提供任何文件。
可是,这段代码对我来说不管用:
@route('/files/<filename>')
def serve_somefile(filename):
return static_file(filename, root= '/directory/to/files')
尽管我发送的GET请求和上面的例子一模一样,但服务器却返回了404错误。
有没有人能告诉我我哪里出错了?
2 个回答
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)
2
你有没有试着把参数指定为路径,就像他们的例子那样:
@route('/files/<filename:path>')
def serve_somefile(filename):
return static_file(filename, root= '/directory/to/files')