1.1Flask简介与开发环境


1.1 Flask 简介与开发环境

本节摘要:Flask 是 Python 最流行的轻量级 Web 框架,核心理念是"最小核心 + 按需扩展"。本节讲清 Flask 的定位、与 Django 的差异、安装方法,以及如何用十行代码跑起第一个应用。

学习目标

阅读完本节,你应当能够:

  1. 说出 Flask 的定位与核心设计理念
  2. 对比 Flask 与 Django 的适用场景
  3. 用 pip 安装 Flask 并验证
  4. 运行第一个 Flask 应用并理解其结构---

问题与直觉:为什么需要 Web 框架

先做个思想实验:没有框架,怎么用 Python 处理一个 HTTP 请求?你需要手动解析请求行、请求头、请求体,自己匹配 URL、调用对应处理函数,再手动拼 HTTP 响应。这些工作繁琐且易错,而且每个项目都要重写一遍。

Web 框架就是把这些"通用工作"抽出来:路由分发、请求解析、响应构造、模板渲染——你只管写业务逻辑。Flask 正是这种理念的极致体现:核心极简(一个路由装饰器加一个应用对象),其余能力(数据库、认证、表单)通过扩展按需加载。

💡 关键直觉:Flask 是"微框架",不是"弱框架"。"微"指的是核心小巧,不是能力受限——它通过扩展生态几乎能做任何事,只是把"用什么"的决定权交给你。

核心原理:Flask 的定位

Flask vs Django

维度 Flask Django
设计理念 微框架,按需扩展 全家桶,装好即用
核心 路由+WSGI 路由+ORM+Admin+Auth
学习曲线 平缓 陡峭
灵活性 高(自由组合) 低(按既定模式)
适合 原型、小中项目、API 大型项目、快速起盘
生态 靠扩展 内置完整

选择逻辑:想要"小而美、自己掌控"选 Flask;想要"装好即用、少操心"选 Django。Flask 也是学习 Web 原理的更好起点——因为框架替你做的少,你更容易理解底层发生了什么。

Flask 的技术栈

from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "Hello, Flask!" if __name__ == '__main__': app.run(debug=True)

这十行代码就是一个完整应用:Flask(__name__) 创建应用对象,@app.route 注册路由,视图函数返回响应,app.run 启动开发服务器。

工程实践要点:安装与运行

安装

pip install flask

建议在虚拟环境中安装(避免污染全局环境):

python -m venv venv # Windows: venv\Scripts\activate # macOS/Linux: source venv/bin/activate pip install flask

验证安装

import flask print(flask.__version__)

运行第一个应用

把上面的代码保存为 app.py,运行:

python app.py

访问 `「相关地址请参见官方文档」 "Hello, Flask!" 即成功。

⚠️ 常见坑:debug=True 只在开发环境用。debug 模式会在代码变更时自动重载、出错时显示调试页面——生产环境必须关闭(否则泄露源码与敏感信息)。

💡 关键直觉:app.run() 是开发专用。生产环境用 Gunicorn/uWSGI 等 WSGI 服务器(见第二章部署),app.run 只适合本地开发。

动手实验:第一个 Flask 应用

from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "欢迎来到 Flask 世界!" @app.route('/about') def about(): return "关于我们" if __name__ == '__main__': app.run(debug=True)

启动后访问两个 URL,你会看到不同页面。这验证了"URL → 视图函数"的映射——Flask 的核心工作方式。试试改一下返回文字,保存后页面自动更新(debug 模式的热重载)。

Flask 的项目结构初探

虽然第一章是"小文件起步",但先了解标准结构有好处:

myapp/ ├── app.py # 应用入口(第一章先用单文件) ├── templates/ # 模板目录(1.4 使用) ├── static/ # 静态文件(CSS/JS/图片) ├── requirements.txt # 依赖清单 └── venv/ # 虚拟环境

单文件适合学习与小项目;真实项目用蓝图模块化(第二章)。

FAQ:Flask 简介高频问题

问:Flask 是最流行的 Python Web 框架吗?
在"轻量级"分类里是;整体上与 Django 并列前二。Flask 因灵活性和学习友好度,特别受 API 开发和创业团队欢迎。

问:Flask 支持异步吗?
原生支持有限(Flask 2.0+ 支持 async 视图,但受限);大规模异步场景通常选 Quart(Flask 的异步版本)或 FastAPI。

问:Flask 能做大项目吗?
能。不少大型项目用 Flask + 蓝图 + 扩展构建,关键是架构(见第四章)。Flask 不限制规模,限制的是"没有良好架构的代码"。

问:学 Flask 需要先学 Django 吗?
不需要。两者平行,甚至先学 Flask 更容易理解 Web 原理(因为框架替你做的少)。

深入理解:虚拟环境与依赖管理

真正的项目不会"裸装"依赖,而是用虚拟环境隔离每个项目的 Python 包——不同项目用不同版本的 Flask,互不干扰。

# 创建虚拟环境(项目目录内) python -m venv venv # 激活 # Windows: venv\\Scripts\\activate # macOS / Linux: source venv/bin/activate # 安装依赖 pip install flask # 导出依赖清单(项目必备,供他人复现环境) pip freeze > requirements.txt

别人拿到项目后一条命令复现环境:

pip install -r requirements.txt

为什么必须这样做:直接全局安装 Flask,多个项目版本冲突时互相覆盖,且系统环境被污染。虚拟环境让每个项目"自成一间房"。

requirements.txt 是什么:一份依赖清单,每一行是一个包名(含版本号),如 flask==3.0.0。它让"换台电脑、换个同事、换台服务器"都能装出一模一样的环境——这是可复现性的基础。

用 pycharm / VS Code 管理虚拟环境

现代编辑器都能自动识别并激活项目的虚拟环境:

  • VS Code:打开项目文件夹,命令面板搜 "Python: Select Interpreter",选择 venv 里的解释器即可;
  • PyCharm:新建项目时选 "Virtualenv",或用 Settings → Project → Python Interpreter 添加。

编辑器识别虚拟环境后,运行、调试、代码补全都会使用正确环境——新手最常见的"代码里 import flask 报错,但命令行能跑"就是解释器选错了

版本选择建议

  • Python:3.10 及以上均可,建议 3.12(Flask 官方积极支持);
  • Flaskpip install flask 默认装最新稳定版(写作本书时为 3.x);教材基于 Flask 3.x,与 2.x 的差异(如 app.get/app.post 快捷方法、before_request 行为)会在书中标注;
  • 不确定环境是否就绪时,用下面的"三行验证法"。

三行验证法

每次开始学习前,先确认环境没问题:

python --version # 1. Python 版本 >= 3.10 pip show flask # 2. Flask 已安装(显示版本信息) python -c "import flask; print(flask.__version__)" # 3. 能 import

三条全通过,环境就绪。任何一条失败,按对应提示处理:没装 Flask 就 pip install flask;import 失败多半是解释器不在虚拟环境里。

常见环境问题速查

现象 原因 解法
ModuleNotFoundError: No module named 'flask' 没装或装错环境 激活虚拟环境后 pip install flask
Address already in use 5000 端口被占 换端口:app.run(port=5001) 或关掉占用程序
终端能跑、编辑器报错 编辑器选了别的解释器 切换解释器到项目 venv
pip 不是内部或外部命令 Python 未加入 PATH 重装 Python 时勾选 "Add to PATH"
安装很慢/超时 网络问题 用国内镜像:`pip install flask -i 「相关地址请参见官方文档」

环境问题占据了新手 80% 的报错——先把环境跑通,后面才谈得上写代码。

要点速记

  • Flask 定位:微框架——核心只做路由与请求分发,能力靠扩展补齐。
  • 环境搭建:Python 3.10+ 与 Flask 3.x;强烈建议用虚拟环境隔离项目依赖。
  • requirements.txt:依赖清单文件,让环境可复现。
  • 验证环境:python --version / pip show flask / import flask 三行验证法。
  • 常见环境坑:解释器选错、端口占用、镜像加速。
  • 第一个应用:app = Flask(name) + @app.route + app.run() 三步跑通。

学习路径:从 Hello World 到完整应用

把环境跑通后,你的 Flask 学习路径可以这样规划:

第一周:打通闭环。 完成 1.2 到 1.4,做出一个能显示动态内容的页面——输入一个名字,页面根据名字返回不同问候。这个"输入→处理→输出"的闭环,就是 Web 应用的全部核心。

第二周:加上交互。 完成 1.5 表单,让用户能提交数据;再做 1.6,理解一次请求怎么走完。此时你已具备"做一个能收数据、能存数据(暂时存内存)、能展示"的小应用的能力。

第三周起:进入进阶。 学习第二章的会话与蓝图,把应用结构化。你会发现,有了第一章的地基,第二章的概念理解起来非常快——这就是地基的价值。

一个完整小项目的画面感:想象你要做一个"待办清单"应用——1.2 路由定义 //add;1.3 用 request.form 取新待办;1.4 用模板循环渲染清单;1.5 用表单提交;1.6 理解每次提交都是一次完整请求。第一章学完,这个应用你已经能写出来了——只是数据重启会丢(第三章用数据库解决)。这就是"学完第一章能做什么"的直观答案。

关于开发工具:学习阶段用 VS Code 或 PyCharm 都行,重点是开启代码补全与调试。Flask 的调试模式(app.run(debug=True))会在代码修改后自动重载——改完代码刷新浏览器就能看到效果,这是开发期最常用的工作流。记住:debug 模式只用于开发,生产环境必须关闭(第二章部署章节详述)。

环境隔离的价值再强调一次:不同项目用不同虚拟环境,是"电脑上同时维护多个项目"的前提。养成每个项目都建 venv 的习惯,后面会感谢自己。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U