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 应用 提升服务稳定性和性能
相关推荐
2601_956139423 分钟前
文旅行业品牌全案公司哪家强
大数据·人工智能·python
hrhcode3 分钟前
【LangGraph】二.State 和 Node 的设计细节
python·ai·langchain·langgraph·ai框架
悟空聊架构11 分钟前
GStack的26种专家角色,真正实现一人成军!
后端
dfdfadffa13 分钟前
如何创建仅在首次订阅时执行一次计算的 RxJS 懒加载 Observable
jvm·数据库·python
counting money15 分钟前
Spring框架基础(依赖注入-半注解形式)
java·后端·spring
m0_6245785916 分钟前
SQL分组后如何计算移动平均值_利用窗口函数AVG配合ROWS
jvm·数据库·python
Code_Artist18 分钟前
一天之内我让 AI 用 Netty 造了一个最小可用的 MVC 框架:体验一下造轮子的快感😅!
后端·netty·ai编程
2401_8242226923 分钟前
如何修复待办事项列表无法添加任务的 JavaScript 错误
jvm·数据库·python
也许明天y25 分钟前
LangChain4j + Spring Boot 多智能体协调架构原理深度解析
spring boot·后端·agent