默认位置:


说明: WEB应用大多会提供基于CDN的静态文件服务以便给用户更好的体验,静态文件主要包括CSS/JS/图片/字体等,FLASK默认只需要在项目根目录下创建"static"的目录,项目中使用基于/static开头的路径就可以访问,但是为了更好的处理能力,推荐使用Nginx或是其它的WEB服务器管理静态文件


推荐方案:

1. 不要在项目中直接写死静态文件路径,应该使用url_for生成路径,当然如果我们想指定路径也可以在创建app实例时指定static_folder参数


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#
# Authors: limanman
# 51CTOBG: http://xmdevops.blog.51cto.com/
# Purpose:
#
"""
# 说明: 导入公共模块
from flask import Flask, url_for, jsonify
# 说明: 导入其它模块
app = Flask(__name__, static_folder='static')
@app.route('/')
def index():
    return jsonify(url_for('static', filename='img/girl.jpg', _external=True))
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9000, debug=True)

注意: 如上通过创建app实例时指定的static_folder是相对于根目录(flask.helpers.get_root_path),支持任意指定静态文件目录,url_for()生成url时第一个参数static其实是app.url_map中默认的视图函数,所以可以直接传入,filename是static视图函数必须的参数,默认返回的是相对URL路径,如果在一些特殊场景下需要全URL路径(如注册确认邮件)可通过指定_external=True返回全URL路径