动态web应用也会需要静态文件,通常是 CSS 和 JavaScript 文件。
理想状况下,你已经配置好Web服务器来提供静态文件,但是在开发中,Flask 也可以做到。
只要在你的包中或是模块的所在目录中创建一个名为 static 的文件夹,在应用中使用 /static 即可访问。
默认情况下:无需手动写路由,static 文件夹里所有文件都可以直接访问。
给静态文件生成 URL,使用特殊的 'static' 端点名:
如果你像获取一个静态文件的路径,可以用url_for 函数。
url_for('static', filename='style.css')Code language: JavaScript (javascript)
这个文件应该存储在文件系统上的 static/style.css。
- 目录规范
项目根目录必须新建文件夹,名称固定为 static,存放css、js、图片、字体等静态资源。
项目目录
├── app.py
└── static
├── style.css
├── main.js
└── images
└── logo.pngCode language: CSS (css)
- 访问方式
- 浏览器直接访问:
http://127.0.0.1:5000/static/style.css - 代码中使用
url_for生成地址
# css文件
url_for('static', filename='style.css')
# 子文件夹中的图片
url_for('static', filename='images/logo.png')Code language: PHP (php)
- html模板中
<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
<script src="{{ url_for('static', filename='main.js') }}"></script>
<img src="{{ url_for('static', filename='images/logo.png') }}">Code language: HTML, XML (xml)
- 文件夹名字必须是static,Flask默认识别,不能随意改名;
- 生产环境正式部署时,一般使用Nginx/Apache处理静态文件,不依靠Flask程序提供;
- filename 参数填写文件相对于static文件夹的路径。
Previous: HTTP的methods
Next: 自带的模板引擎