Flask 配置静态资源文件夹static_url_path、static_folder

如何动态配置静态文件夹 static

image

问题

默认的Flask项目文件结构是这样的:

/app.py
/static
    /js
    /css
    /img
/templates
    /index.html

然后,你的前端访问后台静态资源,是通过这个/static/file.nameurl:

<link as=style href=/static/css/app.697eaad8.css rel=preload>
<img src="/static/img/mylogo.jpg" />

问题来了,在有些前端应用中,资源文件必须要使用根路径/
比如PWA的manifest文件:

<link rel=manifest href=/manifest.json>

如何让Flask访问到这些根路径的文件呢?

解决

文档: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)

配置一下static_url_pathstatic_folder就可以了。

  • static_url_path:
    前端访问资源文件的前缀目录。默认是/static,就是前端必须这样访问:<img src="/static/img/mylogo.jpg" />
    我们改成 '',就可以这样访问了:<img src="/img/mylogo.jpg" />。就达到前端从根目录访问的目的了。
  • static_folder:
    后端存储资源文件的目录。默认是/static,就是指明你后端的资源文件,是放在<your project>/static/目录下,一般不需要改动。

一个粟子:

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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,183评论 19 139
  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,311评论 22 257
  • Flask简介 Flask是什么 Flask 是一个 Python 实现的 Web 开发微框架,轻量级Web 开发...
    DragonFangQy阅读 8,707评论 0 4
  • 空旷的街道,依稀听见树叶吹落的声音,刺眼的路灯将身影无限拉长。 怎么,怎么静的可怕,恍然发现偌大的城市只有自己一人...
    伊禾_阅读 2,778评论 0 2
  • 今天看了昆汀的《无耻混蛋》,沉迷于布拉德皮特的颜值以外,令我影响最深刻的便是饰演号称“犹太猎人”的克里斯托弗瓦尔兹...
    美食清醒记阅读 3,262评论 0 1

友情链接更多精彩内容