【发布时间】:2016-09-17 08:53:42
【问题描述】:
我在 Flask 中有 2 个静态目录。
静态/
css/js/
结果/
-
1/index.htmldetails.json
-
2/index.htmldetails.json
我跟着其他几个答案看了一眼the documentation for serving static files。
app = Flask(__name__)
app.config['RESULT_STATIC_PATH'] = "results/"
@app.route('/results/<path:file>')
def serve_results(file):
# Haven't used the secure way to send files yet
return send_from_directory(app.config['RESULT_STATIC_PATH'], file)
使用以下代码,我现在可以请求results 目录中的文件。
我更熟悉 PHP 和 Apache。假设一个目录有一个index.php 或index.html 文件,它会自动提供。
我的要求:-
- 访问结果目录中的任何文件
- 如果我发送
localhost:3333/results/1的请求,我应该得到index.html的服务
我可以对 Flask 做同样的事情,方法是添加一个路由并检查 index.html 是否存在于子目录中,然后提供它。又找了几个类似的指针here
我目前使用两条路线来获得该功能。当然有更好的方法。
为什么我要包含有关静态目录的详细信息?
我很有可能做错了什么。请告诉我。谢谢:)
【问题讨论】:
-
不要使用 Flask 来提供静态文件。使用 Nginx 或 Apache。他们在这方面比 Flask 好得多,而且他们都可以按照你想要的方式工作。
-
这是一个供内部使用的小型测试应用程序。我认为这里的速度/安全性并不重要。它总是在局域网上运行。当我们构建面向客户的东西时会记住这个提示并使用它:)
-
是的,但你可能会花更多的时间让 Flask 做你想做的事情,而不是设置一个已经可以做到的工具。
-
不能否认这一点。但在我的情况下,我几乎完成了 Flask 中的所有内容(包括这个问题,正在寻找一种更好的方法来获得这个功能)。我希望我一开始就知道。