我正在使用Flask开发一个简单的Web应用程序。
我在files/folder/subfolder/asset[.pdf|.jpg]
中有静态媒体资产(照片,PDF等)。但我希望文件的URL如下所示:files/folder_subfolder_asset[.pdf|jpg]
。如您所见,真实的path
是在filename
中编码的。
每个图像的folder
和subfolder
不同。有很多图片!
在生产环境中,在服务器上,我将使用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.jpeg
,url
更改为static_url_path
中定义的那个。关于python - Flask:在开发中,如何实现媒体 Assets 的动态路由?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44092197/