我在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
足以使事情有效。)
为什么会这样?
答案 0 :(得分:0)
由于应用程序从run.py运行,它认为它的当前目录位于/ BaseFolder,但应用程序希望此目录位于/ BaseFolder / App。
将os.chdir("app")
添加到run.py会修复此问题。但这并没有解释为什么应用程序期望在不同位置使用不同的路径。