Python 编程实战 · 实用工具与库 — Flask 基础入门

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 环境搭建

bash 复制代码
pip install flask

验证安装:

python 复制代码
import flask
print(flask.__version__)

3. 第一个 Flask 项目

创建 app.py

python 复制代码
from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return "Hello Flask!"

if __name__ == '__main__':
    app.run(debug=True)

运行:

bash 复制代码
python app.py

浏览器访问:

arduino 复制代码
http://127.0.0.1:5000/

4. 路由(Routing)

路由就是 URL 与函数的映射。

① 基本路由

python 复制代码
@app.route('/hello')
def hello():
    return "Hello!"

② 路由参数

python 复制代码
@app.route('/user/<name>')
def get_user(name):
    return f"User: {name}"

类型转换器:

python 复制代码
@app.route('/add/<int:a>/<int:b>')
def add(a, b):
    return str(a + b)

5. 请求与响应

Flask 提供 request 对象用于获取 HTTP 请求数据。

python 复制代码
from flask import request

@app.route('/login', methods=['POST'])
def login():
    username = request.form.get('username')
    return f"Welcome {username}"

✔ 获取不同数据来源:

来源 写法
URL 参数 request.args
表单数据 request.form
JSON 数据 request.json
文件上传 request.files

示例:JSON 接口

python 复制代码
@app.route('/api/add', methods=['POST'])
def api_add():
    data = request.json
    return {
        "result": data["a"] + data["b"]
    }

6. 返回 JSON 数据

推荐使用 jsonify

python 复制代码
from flask import jsonify

@app.route('/info')
def info():
    return jsonify({"name": "Flask", "version": 2.0})

7. 模板渲染(Jinja2)

Flask 默认使用 Jinja2 模板引擎。

目录结构:

markdown 复制代码
project/
  app.py
  templates/
    index.html

app.py

python 复制代码
from flask import render_template

@app.route('/page')
def page():
    return render_template('index.html', title="首页")

index.html:

html 复制代码
<h1>{{ title }}</h1>

8. 静态文件(CSS/JS/图片)

默认路径:static/

arduino 复制代码
project/
  static/
    style.css

HTML 使用:

html 复制代码
<link rel="stylesheet" href="/static/style.css">

9. 项目结构推荐(小型项目)

arduino 复制代码
project/
  app.py
  templates/
  static/
  requirements.txt

10. Flask 扩展(常用)

功能 扩展
ORM Flask-SQLAlchemy
登录鉴权 Flask-Login
表单验证 WTForms / Flask-WTF
REST API Flask-RESTful
跨域 Flask-Cors
JWT Flask-JWT-Extended

安装示例:

bash 复制代码
pip install flask_sqlalchemy
pip install flask_cors

11. 生产环境部署

开发环境用 Flask 自带的调试服务器即可,但生产环境应使用:

  • Gunicorn + Nginx(Linux)
  • Waitress(Windows)
  • Docker(最佳方案)

示例(Gunicorn):

bash 复制代码
gunicorn -w 4 app:app

12. 实战练习:构建简易 REST API

python 复制代码
from flask import Flask, request, jsonify

app = Flask(__name__)

db = []

@app.route('/items', methods=['GET'])
def get_items():
    return jsonify(db)

@app.route('/items', methods=['POST'])
def add_item():
    item = request.json
    db.append(item)
    return jsonify({"msg": "added", "item": item})

if __name__ == "__main__":
    app.run(debug=True)

测试 POST 接口:

json 复制代码
POST /items
{
  "name": "apple",
  "qty": 5
}

总结

通过这篇内容,你已经掌握 Flask 的基础技能:

✔ 搭建 Flask 项目 ✔ 路由配置 ✔ 请求与响应 ✔ 处理 JSON / 表单 ✔ 模板引擎 ✔ 静态文件 ✔ 推荐项目结构 ✔ REST API 实战

相关推荐
马卡巴卡几秒前
分库分表数据源ShardingSphereDataSource的Connection元数据误用问题分析
后端
superman超哥1 分钟前
仓颉动态特性探索:反射API的原理、实战与性能权衡
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉动态特性·反射api
小鸡吃米…3 分钟前
带Python的人工智能——计算机视觉
人工智能·python·计算机视觉
骑着bug的coder5 分钟前
第7讲:索引(下)——失效场景与优化实战
后端·mysql
superman超哥16 分钟前
仓颉元编程之魂:宏系统的设计哲学与深度实践
开发语言·后端·仓颉编程语言·仓颉·仓颉语言·仓颉语言特性
一 乐16 分钟前
健身房预约|基于springboot + vue健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·小程序
玄同76531 分钟前
Python 数据类型:LLM 语料与 API 参数的底层处理逻辑
开发语言·人工智能·python·自然语言处理·llm·nlp·知识图谱
databook39 分钟前
数据分析师的“水晶球”:时间序列分析
python·数据挖掘·数据分析
踏浪无痕44 分钟前
JobFlow:时间轮与滑动窗口的实战优化
后端·架构·开源
molaifeng1 小时前
像搭积木一样理解 Golang AST
开发语言·后端·golang