惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Last Watchdog
The Last Watchdog
NISL@THU
NISL@THU
P
Privacy International News Feed
K
Kaspersky official blog
The GitHub Blog
The GitHub Blog
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
Y
Y Combinator Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
量子位
Project Zero
Project Zero
美团技术团队
Security Latest
Security Latest
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
Spread Privacy
Spread Privacy
T
Tor Project blog
博客园 - 聂微东
Hugging Face - Blog
Hugging Face - Blog
Simon Willison's Weblog
Simon Willison's Weblog
Scott Helme
Scott Helme
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
AWS News Blog
AWS News Blog
MongoDB | Blog
MongoDB | Blog
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
T
Tenable Blog
IT之家
IT之家
L
LINUX DO - 最新话题
Apple Machine Learning Research
Apple Machine Learning Research
H
Heimdal Security Blog
S
Schneier on Security
博客园 - 三生石上(FineUI控件)
S
Security Archives - TechRepublic
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Troy Hunt's Blog
D
Docker
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog

博客园_首页

Plist 二进制格式 Milvus 和 PGVector,哪个更好? OpenClaw 已过时?在 VS Code 中运行 Hermes Agent! 第30篇文章:一个大三计科生的自白 Manim如何在数学公式中完美显示中文? Docker 部署 RocketMQ 5 并发编程核心概念辨析 C#事务处理最佳实践:别再让“主表存了、明细丢了”的破事发生 CLI 是什么?为什么大厂突然集体卷命令行? 【从0到1构建一个ClaudeAgent】协作-自主Agent UIImageView 设置图片不生效的原因排查 最小二乘问题详解20:无先验约束下的增量式SFM自由网平差 痞子衡嵌入式:大话双核i.MXRT1180之XIP应用里借助MU实现可靠Flash IAP的方法 AI Chat 封装, SemanticKerne.AiProvider.Unified 已发布 Windows下右键编辑js文件无法打开记事本——在注册表中使用环境变量 在后台服务中使用 Scoped 服务,为什么总是报错? H200 安装驱动并使用sglang启动模型 wireshark 抓包Trap上报告警内容 我用 AI 辅助开发了一系列小工具(2):图片压缩工具 [A Primer On MC and CC] 2.1 Memory Consistency 1 - 指令重排序和 SC 模型 Oracle数据库SCN推进技术详解与实践指南 玩转控件:封装个带图片的Label控件 Claude Code 4.7 真正该升级的不是模型,而是你的工作流 前端小白一句话,AI 帮我做了个颜值拉满的桌面媒体播放器。当代码不再是门槛,一句话编程就是现实。 5. WorkBuddy: 小龙虾的灵魂三件套,让你的小龙虾不只是工具 SQLite 分片方案实战:三种分片策略的深度对比 告别简陋 UI!一款基于 Fluent Design 和基于 WinUI 的开源免费、现代化的 Avalonia UI 控件库 关于二进制排列组合枚举的总结 AI开发-python-LangGraph框架(3-27-LangGraph从零实现大模型智能决策工作流) ElasticSearch主分片和副本分片概念详解 【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响 Hermes Agent 一周暴涨五万 Star,但我劝你别急着追 明明连接的是Redis的DB0,为什么能查到DB3的数据? 【从0到1构建一个ClaudeAgent】协作-Agent团队 熟悉电子元器件之后,电子小白下一步该怎么走? MAF快速入门(23)通过C#类定义Skills .NET 高级开发 | 手写一个对象映射框架 FastAPI数据库ORM怎么选?我肝了三个Demo后,终于不再纠结了 mysqldump 参数拾遗:在遗忘与铭记之间 C# .NET 周刊|2026年3月5期 Claude code入门 - 陈彦斌 一文学习入门 ThingsBoard 开源物联网平台 GitHub 热门项目 | 2026年04月16日 如何为GIT设置全局勾子,为每次提交追加信息 Number.isFinite和isFinite与isNaN()和Number.isNaN的区别 PortSwigger SQL注入LAB2 推荐一个测试人必备的Skills,从功能到性能全搞定(附详细实操和安装下载方式) 筑基期:掌握Odoo基础核心知识点02(Odoo XML 开发方式详解) GLM模型这么火,咱们用vllm也咧一个呗! 深入理解 AbortController:从底层原理到跨语言设计哲学 字符串学习笔记 多租户系统框架的基础模块设计和分析设计 Apache SeaTunnel Zeta 为什么能做到“又快又稳”? AI开发-python-LangGraph框架(3-26-LangGraph基本概念及第一个简单样例) Vue 3 组件通信,别只会用 Props 和 Emits 了,这几个狠活儿你得看看 ElasticSearch7.X版本配置密码 用Manim实现动态交点计算--从一个动点问题说起 团结引擎+Addressable+Instant Game打包抖音小游戏 function call 实战:让 LLM 自动判断 pod 异常、调用日志工具并完成故障分析 bubseek —— 让 Agent 的足迹,变成团队的洞察 通过 C# 读取并导出 PDF 书签 如何用 GitHub Actions 实现 Steam 自动化发布 【从0到1构建一个ClaudeAgent】并发-后台任务 .NET 高级开发 | 定制 ASP.NET Core 框架 电子小白:什么是运算放大器(运放) zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线 堆上的ORW HC32F460 USB CDC通信异常:非对齐访问异常排查 20260413-Hyperbridge 攻击事件:发生在默克尔山上的验证绕过 那些喊着AI 要淘汰你的人,正在靠你的焦虑赚大钱! 深度学习进阶(八)Swin Transformer 最小二乘问题详解19:带先验约束的增量式SFM优化与实现 SnapTranslate 3.0 正式发布:全局划词翻译 + 完整英语学习闭环,一站式搞定查词、记词、复习 工作的意义、工作的困难认知再思考 .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 开了 TUN 模式还是直连?90% 的人都踩过这个坑 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术
Flask框架01初始了解
乔的港口 · 2026-06-15 · via 博客园_首页

Flask概念

flask是一个轻量级别的python web程序,主要的特点就是简单灵活,能够快速的上手构建一个web应用,同时具备扩展到复杂项目的能力

Flask 是基于 Python 开发的微型 Web 框架,被称作微框架,核心原因是本身不绑定任何专用工具与依赖库,原生不内置数据库抽象层、表单验证等通用 Web 组件。

Flask 具备良好的扩展支持能力,可按需额外加装功能插件;目前已有 ORM 对象关系映射、表单校验、文件上传、开放认证及各类配套开发工具的成熟扩展,能按需补齐项目所需功能

flask是什么

Flask 是一个 WSGI(Web Server Gateway Interface) Web 应用框架

WSGI 是 Python 定义的一套标准接口,规定了 Web 服务器如何与 Python Web 应用通信,你可以把它理解为 Python Web 世界的「通用插座」

依赖库 作用 你在什么时候会接触到它
Werkzeug WSGI 工具库,负责 HTTP 请求解析、响应封装、URL 路由匹配 处理请求(request)、返回响应(response)时,底层都是 Werkzeug 在工作
Jinja2 模板引擎,负责将数据渲染为 HTML 页面 使用 render_template() 生成动态页面时
Click 命令行工具框架,提供 flask 终端命令 运行 flask run、自定义 CLI 命令时
itsdangerous 数据签名库,确保数据完整性不被篡改 Session Cookie 的签名验证
blinker 信号机制,允许在特定事件发生时触发回调 在特定事件发生时触发回调

flask设计哲学

微框架,不微能力

  • flask核心非常的精简,但通过丰富的扩展生态,几乎满足任何需求

  • 不强制使用特定的数据库,表单库,或者项目结构,开发者自己选择最适合的工具

  • 这种设计意味着,小型项目不会被框架拖累,大型项目可以按需组装

显式优于隐式

  • 与一些「全家桶」框架不同,Flask 不会偷偷帮你做很多事。

  • 每个功能都需要你明确地引入和配置,这在初学时可能需要多写几行代码,但换来的是对项目的完全掌控

  • 如果你之前接触过 Django,可能会觉得 Flask「什么都要自己来」。这恰恰是 Flask 的设计意图:让你清楚地知道每个功能从何而来。

flask特点

  • 轻量级和简洁:Flask 是一个微框架,提供了最基本的功能,不强制使用任何特定的工具或库。它的核心是简单而灵活的,允许开发者根据需要添加功能。

  • 灵活性:Flask 提供了基本的框架结构,但没有强制性的项目布局或组件,开发者可以根据自己的需求自定义。

  • 可扩展性:Flask 的设计允许你通过插件和扩展来添加功能。许多常见的功能,如表单处理、数据库交互和用户认证,都可以通过社区提供的扩展来实现。

  • 内置开发服务器:Flask 内置了一个开发服务器,方便在本地进行调试和测试。

  • RESTful 支持:Flask 支持 RESTful API 的开发,适合构建现代的 Web 服务和应用程序。

flask适用场景

  • 小型项目:对于小型的个人项目或初创项目,Flask 的简单性和灵活性可以快速启动和迭代。

  • 原型开发:在产品开发的早期阶段,Flask 可以用来快速构建原型,验证概念和用户界面。

  • 微服务:在微服务架构中,Flask 可以用来构建独立的、轻量级的服务组件。

  • API 开发:Flask 非常适合开发 RESTful API,因为它的路由系统简单明了,可以轻松地定义 API 端点。

  • 教育和学习:由于其易用性,Flask 是学习 Web 开发和 Python 编程的优秀工具。

  • 内部工具:Flask 可以用于开发公司内部使用的工具或仪表板,这些工具通常不需要复杂的用户界面。

  • 插件或扩展:Flask 可以作为其他大型框架的插件或扩展,提供特定的功能。

  • 定制 Web 应用:对于需要高度定制的 Web 应用,Flask 提供了足够的灵活性来满足特定需求。

  • 数据可视化:Flask 可以与数据可视化库(如 Bokeh 或 Plotly)结合使用,创建交互式的数据可视化 Web 应用。

  • 科学计算和数据分析:Flask 可以与科学计算库(如 NumPy、Pandas)结合,用于开发数据分析和科学计算的 Web 应用。

  • 轻量级 CMS:Flask 可以用来构建轻量级的内容管理系统,尤其是当需要高度定制化时。

  • Web Scraping:Flask 可以作为 Web Scraping 项目的后端,处理数据抓取和 API 请求。

flask组成

Flask 应用实例:Flask 的核心是应用实例,通过创建 Flask 对象来初始化应用。

路由和视图函数:路由将 URL 映射到视图函数,视图函数处理请求并返回响应。

模板系统:Flask 使用 Jinja2 模板引擎来渲染 HTML 页面,将数据动态插入到页面中。

请求和响应:Flask 处理 HTTP 请求并生成响应,支持多种 HTTP 方法(如 GET、POST)。

技术栈全景图

img

项目目录结构

img

Flask环境搭建

创建Flask项目

img

安装flask包

pip安装

第一个flask项目

# 从这个flask包中导入Flask模块
from flask import Flask

# 创建实例对象,在模块运行的时候是__main__,在被其他模块导入是是模块的名字,也就是该文件的名字
app = Flask(__name__)

# 是一个装饰器,告诉flask哪个url应该触发下面的函数,符合路径的话,函数是自动调用的
@app.route('/')
def shouye():  # 视图函数,
    return "hello world"  # 返回到浏览器上面的

# 条件判断,用于检查这个模块是否被直接运行,而不是被其他模块导入的
if __name__ == '__main__':  
    app.run(debug=True)  # 调用flask实例的run方法,启动flask内置的开发服务器

# debug=True 就是会开启调试模式,改变代码的话,自动重新加载

img

img

venv和原生解释器

每次创建一个项目的时候,选择venv,而不是选择原生的python解释器

venv就是一个独立的环境,多个venv的话是互不干扰的

比如2个项目,所需要的flask模块版本不一样,因此的话,如果我们使用原生的解释器的话,需要频繁的安装和卸载,非常的麻烦

如果使用venv,2个项目,2个不同的虚拟环境(venv),开发哪一个项目的时候,就选择即可,非常的方便

安装的一些包,模块都是安装在venv上面的,不会影响本地的

Flask基本概念

  • 路由:是url到python函数映射,flask允许你定义路由,这样特点的url被访问的时候,就会调用相应的函数

  • 视图函数:视图函数处理请求并返回响应的python函数,通常接收请求对象作为参数,并返回响应对象

  • 请求对象:请求对象包含了客户端发送的信息,如请求的方法,url,请求头,表单数据

  • 模版:Flask 使用 Jinja2 模板引擎来渲染 HTML 模板。模板允许你将 Python 代码嵌入到 HTML 中,从而动态生成网页

  • 应用工厂:应用工厂是一个 Python 函数,它创建并返回一个 Flask 应用实例。这允许你配置和初始化你的应用,并且可以创建多个应用实例

  • 配置对象:Flask 应用有一个配置对象,你可以使用它来设置各种配置选项,如数据库连接字符串、调试模式等

  • 蓝图:蓝图是 Flask 中的一个组织代码的方式,它允许你将相关的视图函数、模板和静态文件组织在一起,并且可以在多个应用中重用

  • 静态文件:静态文件是不会被服务器端执行的文件,如 CSS、JavaScript 和图片文件。Flask 提供了一个简单的方法来服务这些文件

  • 扩展:Flask 有许多扩展,可以添加额外的功能,如数据库集成、表单验证、用户认证等

  • 会话:Flask 使用客户端会话来存储用户信息,这允许你在用户浏览你的应用时记住他们的状态

  • 错误处理:Flask 允许你定义错误处理函数,当特定的错误发生时,这些函数会被调用