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 应用 提升服务稳定性和性能
相关推荐
系统集成-鹰翔7 分钟前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
吴名氏.21 分钟前
Java转AI Agent教程(第二周)超时重试与错误分类
java·人工智能·python·分类·ai agent
青少儿编程课堂23 分钟前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
Eiceblue24 分钟前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
Android小码家38 分钟前
framework&framework-minus-apex&android.jar的区别
android·python·jar
lee_curry42 分钟前
第十周完整学习笔记:继续升级为“检索更准、权限安全、索引可维护、失败可恢复、长期可运行”的企业级 RAG 系统
python·ai·langchain·agent·langgraph
软件技术NINI1 小时前
基于SpringBoot和Vue的摇滚乐鉴赏网站
vue.js·spring boot·后端·spring·html·毕业设计·毕设
Ivanqhz1 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
Mr. zhihao1 小时前
Deep Agent 架构深度解析:主Agent与子Agent完整交互机制与核心参数作用
python·ai·langgraph·deepagent
Tsuki_tl1 小时前
【总结】Redis五大数据类型应用场景及基本命令
数据库·redis·后端·缓存·缓存中间件·redis命令·redis 五大数据类型