我正在使用Flask开发一个简单的Web应用程序。

我在files/folder/subfolder/asset[.pdf|.jpg]中有静态媒体资产(照片,PDF等)。但我希望文件的URL如下所示:files/folder_subfolder_asset[.pdf|jpg]。如您所见,真实的path是在filename中编码的。

每个图像的foldersubfolder不同。有很多图片!

在生产环境中,在服务器上,我将使用NGINX处理文件的提供,如何在开发中完成类似的工作?

注意:在开发中,我使用Flask run来测试应用程序。如果我需要使用其他方法,请提出建议。

最佳答案

您可以尝试使用(应用程序对象或蓝图对象,doc):


static_url_path –可用于为Web上的静态文件指定其他路径。默认为static_folder文件夹的名称。
static_folder –带有静态文件的文件夹,应在static_url_path提供。默认为应用程序根路径中的“静态”文件夹。


例如:

您可以将static_foler设置为静态文件目录:/files/folder/subfolder/asset,并将static_url_path设置为/files/folder_subfolder_asset

from flask import Flask, request, redirect, url_for

app = Flask(__name__,static_folder='files/folder/subfolder/asset/', static_url_path='/files/folder_subfolder_asset')

@app.route('/', methods=['GET'])
def root():
    return redirect(url_for('static', filename='figure.jpeg'))

if __name__ == '__main__':
    app.run(debug=True)


然后,当您转到http://127.0.0.1:5000时,它将重定向到http://127.0.0.1:5000/files/folder_subfolder_asset/figure.jpegurl更改为static_url_path中定义的那个。

关于python - Flask:在开发中,如何实现媒体 Assets 的动态路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44092197/

10-14 01:38