在 Bottlepy 中服务静态文件就像这样简单:
@route('statics/<filepath:path>')
def server_static(filepath):
return static_file(filepath, root='assets')
因此,提供的静态文件应该在assets
目录中。
所以,这个:http://127.0.0.1:8080/statics/jquery.js
将指assets/jquery.js
到目前为止,我没有发现任何问题。但是比方说,我想用应用程序文件夹制作一个框架,其中包含一些模型、视图和控制器。目录结构是这样的:
|---applications
| |--- assets
|---start.py
|---core
|--- __init__.py
在core/__init__.py
我放了一个函数来运行瓶子和路由资产目录
from bottle import route, run, static_file
@route('assets/<filepath:path>')
def _serve_assets(path):
# I want the root to be dynamic, because It is not always be applications
return static_file(path, root=os.path.join('applications', 'assets'))
def framework_start(application_path = 'applications', **kwargs):
# A lot of logic
run(**kwargs)
我start.py
这样做:
from core import framework_start
framework_start(application_path = 'applications')
到目前为止,静态文件按预期服务。但我希望它仍然可以工作,即使我将 start.py 中的代码更改为:
framework_start(application_path = 'app')
和目录结构到这个
|---apps
| |--- assets
|---start.py
|---core
|--- __init__.py
那么,该怎么做呢?如何使用动态根进行静态路由?