0

在 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

那么,该怎么做呢?如何使用动态根进行静态路由?

4

1 回答 1

1
return static_file(filename, root=filefolder)

第一个参数只是名称,第二个参数是包含它的文件夹。

你知道文档在哪里...

从你的评论我想我明白了。

如果您希望模板具有路径,则需要通过类似的方式将其发送到瓶中,<input type="hidden" name="arch"...request.GET.get('arch', '')使用root=....

于 2013-04-04T11:44:56.923 回答