我对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请求。
有谁可以指出我在这里做错了什么?
答案 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)