Python Web 框架的使用率仍然是 Flask、Django 和 FastAPI 之间的三强之争。所有其他框架加起来只能勉强排在第三位。下面对这三个主流框架做下比较:
Djanggo- 使用比率: 39%
- 系统特点:全栈框架:内置 ORM、模板引擎、表单处理、用户认证等功能;开箱即用:适合快速开发复杂的 Web 应用;社区强大:有丰富的第三方库和插件。
- 系统性能:中等。由于功能丰富,性能略低于轻量级框架,但足够应对大多数场景。
- 适用场景:需要快速开发的全栈应用如内容管理系统(CMS)、社交网络、电子商务网站等。
Flask- 使用比率:36%
- 系统特点:微框架:轻量级,核心功能简单,易于扩展;灵活:可以根据需求选择插件和库;学习曲线低:适合初学者和小型项目。
- 系统性能:较高:由于轻量级设计,性能优于 Django。
- 适用场景:小型 Web 应用、API 服务、原型开发。
FastAPI- 使用比率:25%
- 系统特点:高性能:基于 Starlette 和 Pydantic,性能接近 Node.js 和 Go;异步支持:原生支持异步编程;自动文档:自动生成 OpenAPI 和 Swagger 文档。
- 系统性能:极高:是目前性能最好的 Python Web 框架之一。
- 适用场景:高性能 API 服务、微服务、实时应用。
目前纯粹的前端框架有很多如vue、angular、React等,笔者不建议使用Python做web界面开发,可以使用Python开发人工智能后端后通过restful API发布接口,供第三方应用调用即可。
下面逐个介绍这几个框架并提供简单的web开发应用,只做抛砖引玉的作用,不做详细的引申,感兴趣的同学可以针对自己感兴趣的框架做进一步的学习。接下来继续了解Flask。
Flask是一个轻量级的WSGI web应用框架。它的目的是让开发人员能够快速入门和易于使用,容易扩展。它最初是Werkzeug和Jinja的简单包装,现在已经成为最流行的 Python web应用程序框架之一。
Flask提供建议,但不强制任何依赖项或项目构造。取决于开发人员选择他们想要使用的工具和库。
社区提供了许多扩展,可以轻松添加新功能。
项目依赖
Python依赖
推荐使用Python最新的版本。如果项自主选择,则要求Python 3.9及以上版本。
依赖项
Flask依赖于一下包或库,在安装Flask时也将自动安装进入:
Werkzeug:实现了应用程序和服务器之间的标准Python接口WSGI;Jinja:是一种模板语言,用于渲染应用程序所提供的页面;MarkupSafe:与Jinja一起提供。它在呈现模板时转义不可信的输入,以避免注入攻击;ItsDangerous:安全地签名数据以确保其可信任。这是用来保护Flask中cookie的;Click:是编写命令行应用程序的框架。使用它来支持flask命令,并允许添加自定义管理命令;Blinker:提供了对信号的支持。
另外,还有以下的依赖项,在必要的时候也需要安装:
python-dotenv:在运行flask命令时启用来自dotenv的环境变量支持。Watchdog:为开发服务器提供了一个更快、更有效的看门狗。
还有,你可以在你的应用里选择使用gevent或者eventlet。此种情况下,需要greenlet >= 1.0,如果使用PyPy,则要求PyPy >= 7.3.7。
Flask 安装
安装Flask很简单,运行以下命令:
uv pip install flask开发第一个应用
首先我们使用uv创建一个项目flaskdemo:
uv init flaskdemo输出:
Initialized project `flaskdemo` at `E:\template\code\python\flaskdemo`使用uv创建项目后并没有生成虚拟环境,但此时在项目目录上会自动生成一个main.py的Python文件:
cd flashdemo dir目录结构如下:
. ├── .python-version ├── README.md ├── main.py ├── pyproject.toml这时,再运行以下命令创建虚拟环境并激活环境:
uv run main.py输出:
Using CPython 3.13.2 interpreter at: D:\ProgramFiles\Python\Python313\python.exe Creating virtual environment at: .venv Hello from flaskdemo!再看目录,多了个.venv虚拟环境目录:
. ├── .venv #虚拟环境目录 │ ├── Scripts │ ├── lib │ └── pyvenv.cfg ├── .python-version ├── README.md ├── main.py ├── pyproject.toml └── uv.lock # 锁定文件然后激活虚拟环境后安装flask:
.venv\Scripts\activate uv add flask使用以上命令将flask及其依赖项安装到当前项目的虚拟环境中。我们看一下安装的依赖项:
uv pip list结果:
Package Version ------------ ------- blinker 1.9.0 click 8.2.0 colorama 0.4.6 flask 3.1.0 itsdangerous 2.2.0 jinja2 3.1.6 markupsafe 3.0.2 werkzeug 3.1.3回过头来,我们用记事本等文本编辑工具打开main.py,修改的代码如下:
from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "<p>Hello, World!</p>"首先,我们导入了Flask类。这个类的一个实例就是我们的WSGI应用程序。
接下来,我们创建该类的一个实例。第一个参数是应用程序的模块或包的名称。__name__是一个方便的快捷方式,适用于大多数情况。这是必需的,以便Flask知道在哪里查找模板和静态文件等资源。
然后我们使用route()装饰器告诉Flask哪个URL应该触发我们的函数。该函数返回我们想要在用户浏览器中显示的消息。默认的内容类型是HTML,因此字符串中的HTML将由浏览器呈现。
修改完成后保存文件,现在我们运行服务:
flask --app main run如果以下内容展示之后,表示服务运行起来了:
* Serving Flask app 'main' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:5000 Press CTRL+C to quit这时,我们打开浏览器,在地址栏上输入http://127.0.0.1:5000,将看到如下结果:
至此,我们用Flask开发的第一个应用就完成了。