Flask应用程序需要静态文件在两个位置才能显示

时间:2015-07-14 19:48:36

标签: python flask

我在flask中使用send_from_directory来提供一些静态js资产。应用程序结构如下所示:

/BaseFolder
    /App
        __init__.py
        /js/
            jquery.js
    run.py
    /js/
        jquery.js

__init__.py负责大多数应用管理,并具有以下条件:

app = Flask(__name__)
[...]
@app.route('/js/<path:path>')
def send_js(path):
    return send_from_directory('js',path)
[...]
def go():
    [...]
    app.run()

应用程序本身从run.py文件开始,该文件在上面的文件中运行go函数。 (这实际上反映了 Flask Web Development 中应用程序的应用程序设置,因此它应该是Flask的典型用例。)

理论上,send_js函数应该从App / js /或js /目录返回一个文件。但是,删除这些文件中的任何一个都会导致应用程序变为404.(该应用程序提供较低文件的内容;上层文件夹中的偶数touch js/jquery.js足以使事情有效。)

为什么会这样?

1 个答案:

答案 0 :(得分:0)

由于应用程序从run.py运行,它认为它的当前目录位于/ BaseFolder,但应用程序希望此目录位于/ BaseFolder / App。

os.chdir("app")添加到run.py会修复此问题。但这并没有解释为什么应用程序期望在不同位置使用不同的路径。