我正在使用Flask开发一个简单的Web应用程序。
我在files/folder/subfolder/asset[.pdf|.jpg]
内有静态媒体资产(照片,PDF等)。但我希望文件的URL看起来像这样:files/folder_subfolder_asset[.pdf|jpg]
。如您所见,真实的path
在filename
。
folder
和subfolder
都不同。有很多图像!
在生产上,在服务器上,我将使用NGINX处理文件的提供,如何在上完成类似的操作发展?
注意:在开发上,我使用Flask run
来测试应用程序。如果我需要使用不同的东西,请建议。
答案 0 :(得分:1)
您可以尝试使用(应用程序对象或蓝图对象,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
中定义的那个