如何动态配置静态文件夹 staticcss
###问题 默认的Flask项目文件结构是这样的:html
/app.py
/static
/js
/css
/img
/templates
/index.html
复制代码
而后,你的前端访问后台静态资源,是经过这个/static/file.name
url:前端
<link as=style href=/static/css/app.697eaad8.css rel=preload>
<img src="/static/img/mylogo.jpg" />
复制代码
问题来了,在有些前端应用中,资源文件必需要使用根路径/
! 好比PWA的manifest文件:vue
<link rel=manifest href=/manifest.json>
复制代码
如何让Flask访问到这些根路径的文件呢?git
###解决 文档:http://flask.pocoo.org/docs/1.0/api/#configuration class flask.Flask(import_name, static_url_path=None, static_folder='static', static_host=None, host_matching=False, subdomain_matching=False, template_folder='templates', instance_path=None, instance_relative_config=False, root_path=None)github
配置一下static_url_path
、static_folder
就能够了。json
/static
,就是前端必须这样访问:<img src="/static/img/mylogo.jpg" />
咱们改为 '',就能够这样访问了:<img src="/img/mylogo.jpg" />
。就达到前端从根目录访问的目的了。/static
,就是指明你后端的资源文件,是放在<your project>/static/
目录下,通常不须要改动。###一个粟子:flask
from flask import Flask, render_template
app = Flask(__name__, static_url_path='')
@app.route('/')
def index():
return render_template('index.html')
复制代码
源码:https://github.com/kevinqqnj/flask-vue-pwa PWA演示:https://flask-vue-pwa.herokuapp.com/后端