Flask:在开发过程中,如何实现媒体资产的动态路由?

时间:2017-05-21 00:55:45

标签: python flask

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

我在files/folder/subfolder/asset[.pdf|.jpg]内有静态媒体资产(照片,PDF等)。但我希望文件的URL看起来像这样:files/folder_subfolder_asset[.pdf|jpg]。如您所见,真实的pathfilename

中编码 每张图片的

foldersubfolder都不同。有很多图像!

生产上,在服务器上,我将使用NGINX处理文件的提供,如何在上完成类似的操作发展

注意:在开发上,我使用Flask run来测试应用程序。如果我需要使用不同的东西,请建议。

1 个答案:

答案 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.jpegurl会更改为static_url_path中定义的那个