news 2026/4/16 16:16:49

10 - 使用Flask开发Web应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10 - 使用Flask开发Web应用

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 服务、微服务、实时应用。

目前纯粹的前端框架有很多如vueangularReact等,笔者不建议使用Python做web界面开发,可以使用Python开发人工智能后端后通过restful API发布接口,供第三方应用调用即可。

下面逐个介绍这几个框架并提供简单的web开发应用,只做抛砖引玉的作用,不做详细的引申,感兴趣的同学可以针对自己感兴趣的框架做进一步的学习。接下来继续了解Flask

Flask是一个轻量级的WSGI web应用框架。它的目的是让开发人员能够快速入门和易于使用,容易扩展。它最初是WerkzeugJinja的简单包装,现在已经成为最流行的 Python web应用程序框架之一。

Flask提供建议,但不强制任何依赖项或项目构造。取决于开发人员选择他们想要使用的工具和库。

社区提供了许多扩展,可以轻松添加新功能。

项目依赖

Python依赖

推荐使用Python最新的版本。如果项自主选择,则要求Python 3.9及以上版本。

依赖项

Flask依赖于一下包或库,在安装Flask时也将自动安装进入:

  • Werkzeug:实现了应用程序和服务器之间的标准Python接口WSGI;
  • Jinja:是一种模板语言,用于渲染应用程序所提供的页面;
  • MarkupSafe:与Jinja一起提供。它在呈现模板时转义不可信的输入,以避免注入攻击;
  • ItsDangerous:安全地签名数据以确保其可信任。这是用来保护Flaskcookie的;
  • 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开发的第一个应用就完成了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:16:06

效率翻倍:一键切换工作/娱乐分辨率方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个多场景分辨率切换工具&#xff1a;1. 预设工作模式(高分辨率)、娱乐模式(适中分辨率)、演示模式(特定比例) 2. 系统托盘常驻 3. 快捷键快速切换 4. 自动记录各应用的最佳分…

作者头像 李华
网站建设 2026/4/16 14:06:18

5分钟构建API错误监控原型:从500错误开始

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速开发一个API错误监控原型系统。要求&#xff1a;1. 捕获500错误并分类 2. 实时可视化展示 3. 简单的预警机制 4. 错误频率统计 5. 可导出报告。使用最简技术栈&#xff0c;确保…

作者头像 李华
网站建设 2026/4/16 14:03:50

国内可靠的直放站品牌推荐

国内可靠的直放站品牌推荐在通信领域&#xff0c;直放站作为一种重要的信号增强设备&#xff0c;对于改善信号覆盖、提升通信质量起着关键作用。面对市场上众多的直放站品牌&#xff0c;选择可靠的品牌成为用户关注的重点。下面为大家介绍一些国内可靠的直放站品牌。京信通信&a…

作者头像 李华
网站建设 2026/4/16 1:20:43

基于微信小程序的校园电子公告系统毕设源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于微信小程序的校园电子公告系统&#xff0c;以提升校园信息传播效率&#xff0c;优化校园管理与服务。具体研究目的如下&#xff1a…

作者头像 李华
网站建设 2026/4/15 19:07:20

快速验证:CentOS7换源对软件安装速度的影响

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个CentOS7源速度测试方案&#xff0c;要求&#xff1a;1) 自动部署干净CentOS7环境 2) 执行换源前后对比测试 3) 测试多个软件包安装耗时 4) 生成可视化对比图表 5) 输出包含…

作者头像 李华
网站建设 2026/4/16 15:31:14

信息系统项目管理师论文考情分析及评分标准

信息系统项目管理师论文写作&#xff1a;考情分析&#xff08;2018年-2025年历年论文真题考试范围&#xff09;&#xff0c;论文背景、正文写作、结尾写作&#xff0c;论文写作难点和痛点分析及解决办法。论文评分标准。写论文之前必备知识点。 信息系统项目管理师论文考情分…

作者头像 李华