如何从Flask服务器中的外部文件夹访问文件?

时间:2019-07-10 13:06:28

标签: python html flask

我是不熟悉烧瓶的人,对于将外部文件夹中的库包含到html模板中感到非常困惑。我知道如何从static文件夹中进行添加,但是我想将代码和库文件保存在单独的文件夹中。所以,我的目录结构是这样的:

./main_directory
|
|_./Code
| |_./flask_script.py
| |_./static
|
|_./Libraries

我了解send_from_directory()函数,但我不完全了解如何使用它。我最常看到的是:

@app.route('/cdn/<path:filename>')
def custom_static(filename):
    return send_from_directory(app.config['CUSTOM_STATIC_PATH'], filename)

哪个来自另一个StackOverflow答案。但是在这种情况下,cdn是什么?另外,app.confg['CUSTOM_STATIC_PATH']的值设置为什么?为了使这项工作能够在HTML模板中完成?

1 个答案:

答案 0 :(得分:1)

通常,使用flask提供静态文件仅对开发有利。实际上,建议在上线时以其他方式提供静态文件,例如,在您的应用程序前面放置一台Web服务器并委派文件服务,或将文件放置在文件存储中,例如AWS S3。

关于您的custom_static路由,在这种情况下,cdn只是一个URL前缀(可以是任何前缀),然后您就可以使用<img src="/cdn/test.jpg">之类的模板来处理静态资产。 (cdn前缀可以提示您以后这些文件将被移至CDN,而生产中的flask无法提供这些文件。)

app.config['CUSTOM_STATIC_PATH']应该设置为包含自定义静态文件的目录的绝对路径。