在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
那么,该怎么做?如何使用动态root进行静态路由?
答案 0 :(得分:1)
return static_file(filename, root=filefolder)
第一个参数只是名称,第二个参数是包含它的文件夹。
您知道docs在哪里......
从你的评论我认为我明白了。
如果您希望模板具有路径,则需要通过<input type="hidden" name="arch"...
之类的方式将其发送到瓶子并通过request.GET.get('arch', '')
接收并与root=...
一起使用。