Flask 是 Python 生态中最灵活、最轻量的 Web 框架之一,非常适合快速构建接口、网站原型、后台服务等。它遵循 WSGI 标准,核心库极其简洁,但可以通过插件无限扩展。
1. Flask 基础概念
✔ Flask 是什么?
- 一个 微框架(Micro Framework)
- 默认只提供核心组件:路由、请求处理、模板、调试器
- 需要什么功能就安装什么扩展(ORM、表单验证、JWT、数据库等)
✔ Flask 的优势
- 代码简洁、上手快
- 灵活度极高(不像 Django 那样有强约束)
- 大量插件生态,如:
- Flask-RESTful(构建 REST API)
- Flask-SQLAlchemy(数据库 ORM)
- Flask-Login(登录鉴权)
- Flask-JWT-Extended(JWT)
2. Flask 环境搭建
1pip install flask 2
验证安装:
1import flask 2print(flask.__version__) 3
3. 第一个 Flask 项目
创建 app.py
1from flask import Flask 2 3app = Flask(__name__) 4 5@app.route('/') 6def index(): 7 return "Hello Flask!" 8 9if __name__ == '__main__': 10 app.run(debug=True) 11
运行:
1python app.py 2
浏览器访问:
1http://127.0.0.1:5000/ 2
4. 路由(Routing)
路由就是 URL 与函数的映射。
① 基本路由
1@app.route('/hello') 2def hello(): 3 return "Hello!" 4
② 路由参数
1@app.route('/user/<name>') 2def get_user(name): 3 return f"User: {name}" 4
类型转换器:
1@app.route('/add/<int:a>/<int:b>') 2def add(a, b): 3 return str(a + b) 4
5. 请求与响应
Flask 提供 request 对象用于获取 HTTP 请求数据。
1from flask import request 2 3@app.route('/login', methods=['POST']) 4def login(): 5 username = request.form.get('username') 6 return f"Welcome {username}" 7
✔ 获取不同数据来源:
| 来源 | 写法 |
|---|---|
| URL 参数 | request.args |
| 表单数据 | request.form |
| JSON 数据 | request.json |
| 文件上传 | request.files |
示例:JSON 接口
1@app.route('/api/add', methods=['POST']) 2def api_add(): 3 data = request.json 4 return { 5 "result": data["a"] + data["b"] 6 } 7
6. 返回 JSON 数据
推荐使用 jsonify:
1from flask import jsonify 2 3@app.route('/info') 4def info(): 5 return jsonify({"name": "Flask", "version": 2.0}) 6
7. 模板渲染(Jinja2)
Flask 默认使用 Jinja2 模板引擎。
目录结构:
1project/ 2 app.py 3 templates/ 4 index.html 5
app.py:
1from flask import render_template 2 3@app.route('/page') 4def page(): 5 return render_template('index.html', title="首页") 6
1<h1>{{ title }}</h1> 2
8. 静态文件(CSS/JS/图片)
默认路径:static/
1project/ 2 static/ 3 style.css 4
HTML 使用:
1<link rel="stylesheet" href="/static/style.css"> 2
9. 项目结构推荐(小型项目)
1project/ 2 app.py 3 templates/ 4 static/ 5 requirements.txt 6
10. Flask 扩展(常用)
| 功能 | 扩展 |
|---|---|
| ORM | Flask-SQLAlchemy |
| 登录鉴权 | Flask-Login |
| 表单验证 | WTForms / Flask-WTF |
| REST API | Flask-RESTful |
| 跨域 | Flask-Cors |
| JWT | Flask-JWT-Extended |
安装示例:
1pip install flask_sqlalchemy 2pip install flask_cors 3
11. 生产环境部署
开发环境用 Flask 自带的调试服务器即可,但生产环境应使用:
- Gunicorn + Nginx(Linux)
- Waitress(Windows)
- Docker(最佳方案)
示例(Gunicorn):
1gunicorn -w 4 app:app 2
12. 实战练习:构建简易 REST API
1from flask import Flask, request, jsonify 2 3app = Flask(__name__) 4 5db = [] 6 7@app.route('/items', methods=['GET']) 8def get_items(): 9 return jsonify(db) 10 11@app.route('/items', methods=['POST']) 12def add_item(): 13 item = request.json 14 db.append(item) 15 return jsonify({"msg": "added", "item": item}) 16 17if __name__ == "__main__": 18 app.run(debug=True) 19
测试 POST 接口:
1POST /items 2{ 3 "name": "apple", 4 "qty": 5 5} 6
总结
通过这篇内容,你已经掌握 Flask 的基础技能:
✔ 搭建 Flask 项目 ✔ 路由配置 ✔ 请求与响应 ✔ 处理 JSON / 表单 ✔ 模板引擎 ✔ 静态文件 ✔ 推荐项目结构 ✔ REST API 实战
《Python 编程实战 · 实用工具与库 — Flask 基础入门》 是转载文章,点击查看原文。