Flask 是一个基于 Python 的轻量级 Web 应用框架,由 Armin Ronacher 于 2010 年开发。
它以简洁、灵活、可扩展著称,被称为"微框架(microframework)" ,核心精简但功能强大,可通过插件轻松扩展。
Flask 是 Web 应用、RESTful API、后端接口服务等 Python 项目的首选框架之一。
安装:
nginx
pip install flask
常见应用场景:
(1)快速开发 Web 网站:构建个人网站或公司官网原型。
(2)RESTful API 服务:为前端或移动端提供数据接口。
(3)AI/机器学习部署:封装模型预测接口,提供 HTTP 调用服务。
(4)教学与实验项目:验证 HTTP 请求与服务端逻辑。
(5)轻量级后端系统:中小型应用的后台管理与任务调度。
◆ ◆ ◆
核心概念
1、微框架(Micro Framework)
Flask 本身不强制使用数据库、模板引擎或身份验证系统。
它仅提供核心功能(路由、请求处理、模板渲染等),其余部分由开发者按需添加插件(如 SQLAlchemy、Flask-Login、Flask-RESTful)。
2、路由(Routing)
使用装饰器 @app.route() 定义 URL 与函数的对应关系。
3、请求与响应(Request / Response)
通过 flask.request 获取客户端数据,通过 return 或 flask.Response 返回结果。
4、模板系统(Jinja2)
Flask 内置支持 Jinja2 模板语言,可动态生成 HTML 页面。
5、开发服务器与调试模式
自带轻量服务器,可通过 debug=True 实现自动重载与错误追踪。
◆ ◆ ◆
应用举例
例 1:最简 Web 服务
python
from flask import Flask
app = Flask(__name__)
@app.route("/")def home(): return "Hello, Flask!"
if __name__ == "__main__": app.run()
运行后访问 http://127.0.0.1:5000/ 即可看到输出。
例 2:动态路由与变量
python
from flask import Flask, request
app = Flask(__name__)
@app.route("/submit", methods=["GET", "POST"])def submit(): if request.method == "POST": data = request.form.get("name") return f"收到表单数据:{data}" return '<form method="post"><input name="name"><input type="submit"></form>'
app.run(debug=True)
访问 /user/Alice 将显示 "欢迎你,Alice!"
例 3:GET 与 POST 请求
python
from flask import Flask, request
app = Flask(__name__)
@app.route("/submit", methods=["GET", "POST"])def submit(): if request.method == "POST": data = request.form.get("name") return f"收到表单数据:{data}" return '<form method="post"><input name="name"><input type="submit"></form>'
app.run(debug=True)
例 4:JSON 接口(API)
python
from flask import Flask, jsonify, request
app = Flask(__name__)
@app.route("/api/sum", methods=["POST"])def calc_sum(): data = request.get_json() result = data["a"] + data["b"] return jsonify({"result": result})
app.run(debug=True)
向 /api/sum 发送 JSON:{"a":2,"b":3} → 返回 {"result":5}。
例 5:模板渲染
目录结构:
go
app.pytemplates/ └── hello.html
hello.html 内容:
xml
<!DOCTYPE html><html> <body> <h1>Hello, {{ name }}!</h1> </body></html>
python
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/hi/<name>")def hi(name): return render_template("hello.html", name=name)
app.run(debug=True)
访问 /hi/Tom → 页面显示 "Hello, Tom!"。
◆ ◆ ◆
常用函数与类速览
Flask(app_name)
创建 Flask 应用对象。
参数:
app_name:模块名(通常为 name)。
返回:Flask 应用实例。
Flask.run(host='127.0.0.1', port=5000, debug=False)
启动开发服务器。
参数:
host:主机地址(默认本地)。
port:端口号(默认 5000)。
debug:是否启用调试模式(True 支持热重载)。
返回:无(启动阻塞型服务)。
@app.route(rule, methods=['GET'])
定义路由规则。
参数:
rule:URL 路径字符串。
methods:允许的 HTTP 方法(默认 ['GET'])。
返回:装饰器函数。
flask.request
请求上下文对象,封装了 HTTP 请求信息。
常用属性:
request.method:请求方法(GET / POST)。
request.args:URL 参数(字典)。
request.form:表单数据(字典)。
request.get_json():获取 JSON 请求体。
返回:请求对象。
flask.jsonify(*args, **kwargs)
将数据转换为 JSON 响应。
参数:
args / kwargs:任意可序列化的对象。
返回:Response 对象(MIME 类型为 application/json)。
flask.render_template(template_name, **context)
渲染模板文件。
参数:
template_name:模板文件名(在 templates/ 下)。
context:模板变量。
返回:HTML 字符串。
flask.redirect(location)
执行页面重定向。
参数:
location:跳转的 URL。
返回:重定向响应对象。
flask.url_for(endpoint, **values)
根据函数名生成对应的 URL。
参数:
endpoint:视图函数名。
values:动态路径变量。
返回:URL 字符串。
📘 小结
Flask 是 Python 生态中最灵活、最简洁的 Web 框架之一。
它以极低的学习成本实现 Web 开发的全部基础能力,并能与 SQLAlchemy、Jinja2、Werkzeug 等组件无缝协作。

"点赞有美意,赞赏是鼓励"