Flask 框架

核心定位:轻量级 Python Web 微框架 设计核心为简洁 灵活 易用 无强制项目结构 适合 Web 开发入门 快速原型开发和小型 Web 应用开发

Flask 本身核心代码量少 核心能力由两个核心第三方库支撑 构成架构基础

  • Werkzeug:底层库 提供 WSGI 接口 HTTP 请求 / 响应处理 路由等核心功能
  • Jinja2:强大的模板引擎 用于动态生成 HTML 页面

安装方式 :通过 pip 安装 可配置国内源(阿里 华为)提升安装速度 基础命令pip3 install flask

|-------|----------------------------------------------------------------------------------|
| 组件 | 核心作用 |
| 应用实例 | Flask 核心入口,由Flask(__name__)创建 管理路由 配置 扩展 上下文等所有核心资源 |
| 路由系统 | 由 Werkzeug 实现 通过@app.route装饰器建立URL 与视图函数的映射关系 |
| 视图函数 | 处理 HTTP 请求的核心逻辑单元 接收请求参数 处理业务逻辑 返回响应结果(文本 / 模板 / JSON) |
| 上下文对象 | 临时存储请求相关数据(请求上下文request/session应用上下文current_app/g)让视图函数无需传参即可获取请求 / 应用信息 |
| 模板引擎 | 处理动态页面生成 实现模板解析 数据渲染 模板继承复用 |
| 扩展机制 | 提供统一的扩展接入入口 可集成 Flask-WTF(表单)Flask-SQLAlchemy(数据库)等扩展 丰富架构能力 |

路由与视图函数

路由是 Flask 核心 实现 URL 与视图函数的关联 支持多种灵活配置方式

  • 动态路由 :通过<参数名>捕获 URL 中的动态数据 参数会自动传递给视图函数 实现个性化响应
  • 多 HTTP 请求方法 :默认支持 GET 请求 通过methods参数指定允许的请求方法(如 POST PUT)非指定方法访问会返回 405 错误
  • Jinja2 模板渲染
    • 模板文件默认存放在templates文件夹 通过render_template()函数加载模板并传递动态数据 模板中用{``{ 变量名 }}接收
    • 模板继承:通过基础模板(如base.html)定义通用布局 用{% block 块名 %}定义可替换区域 子模板通过{% extends '基础模板.html' %}继承 并重写块内容 提升页面复用性

Flask 路由架构设计

路由是 Flask 连接 URL 与业务逻辑的核心 基于 Werkzeug 实现高效的 URL 匹配机制架构设计具备以下特点

  1. 装饰器式定义 :通过@app.route(URL, methods=[])极简方式实现路由映射 底层将路由规则(URL 请求方法 参数规则)注册到应用实例的路由注册表中
  2. 动态路由支持 :通过<参数名>/<类型:参数名>(如<int:id>)定义动态 URL 底层自动解析 URL 中的动态参数并传递给视图函数 适配个性化请求(如/user/<id>
  3. 请求方法限定 :通过methods参数指定路由允许的 HTTP 方法(GET/POST/PUT/DELETE)未允许的方法会直接返回 405 错误 实现请求方法的精细化控制
  4. 路由匹配优先级 :静态路由(如/index)优先级高于动态路由(如/user/<name>)避免 URL 匹配冲突 保证路由解析的准确性

表单处理与数据验证

Flask 结合Flask-WTF扩展简化表单处理 支持便捷的字段定义和数据验证

  1. 安装扩展:pip3 install flask-wtf
  2. 核心配置:设置app.secret_key用于 CSRF 保护 生产环境需使用安全的随机字符串
  3. 定义表单类:继承FlaskForm通过 WTForms 字段(如StringField)定义表单项 通过validators添加验证规则
  4. 常用验证规则:DataRequired()(必填)Length()(长度限制)Email()(邮箱验证)EqualTo()(字段值匹配)
  5. 视图函数处理:实例化表单对象 通过form.validate_on_submit()判断表单是否合法提交 GET 请求 / 验证失败时渲染模板 成功则处理表单数据
  6. 模板渲染表单:需添加{``{ form.csrf_token }}防止 CSRF 攻击 通过{``{ 表单对象.字段名() }}生成表单标签

生产环境部署

开发环境用app.run()启动 生产环境需搭配专业 Web 服务器 常用组合

  1. Gunicorn :Python WSGI HTTP 服务器 启动时可指定工作线程数 监听地址和端口 核心关联应用模块:应用实例
  2. Nginx:作为反向代理 处理静态文件请求 将动态请求转发给 Flask 应用 提升服务稳定性和性能
相关推荐
AI数据皮皮侠7 分钟前
全国高考报名、录取数据(1977-2026)
大数据·数据库·人工智能·python·机器学习·高考
AINative软件工程12 分钟前
Tool Schema 写得好,模型少出错:5 个工程师必知的设计原则
后端·openai
AINative软件工程14 分钟前
AI 写的代码,Review 要怎么改?我们团队的 15 条 PR 检查清单
后端·openai
武子康17 分钟前
Java-21 深入浅出 MyBatis 手写ORM框架2 手写Resources、MappedStatment、XMLBuilder等
java·后端
Full Stack Developme24 分钟前
Java DFA算法
java·python·算法
techdashen33 分钟前
在 Fly.io 上使用 Rust 构建远程开发环境:从 Tokio 到 eBPF
开发语言·后端·rust
留白_37 分钟前
pandas文件读取与存储
开发语言·python·pandas
我的xiaodoujiao39 分钟前
API 接口自动化测试详细图文教程学习系列25--继续处理testCase中的数据
python·学习·测试工具·pytest
Wang ruoxi43 分钟前
Pygame 小游戏——节奏点击
python·pygame
夕除1 小时前
AOP 实现 Redis 缓存切面解析
java·开发语言·python