当前位置: 首页 > news >正文

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开发的第一个应用就完成了。

http://www.cnnetsun.cn/news/100543.html

相关文章:

  • 如何用AI快速解决Python依赖包安装错误
  • GUI Agent:AI如何自动化你的前端开发流程
  • 比传统traceroute快10倍:新一代网络诊断工具
  • 在线魔方解谜站:从零入门到精通的智能魔方学习平台
  • 自动化测试框架搭建:持续验证EmotiVoice输出质量
  • Arthas,阿里巴巴开款的Java诊断神器!
  • 创业者必看!深圳注册代办公司靠谱之选-权威盘点
  • 【异常检测】AdaptCLIP:适配CLIP用于通用视觉异常检测
  • 结合ASR构建完整对话系统:EmotiVoice的角色定位
  • EmotiVoice语音情感强度可视化分析工具介绍
  • 对长上下文能力有不同要求,怎么选择合适的模型?
  • 工程期刊投稿全攻略:高效发表指南
  • vue基于springboot的农业合作社果蔬批发农产品商城信息管理系统的设计与实现
  • vue基于springboot的社区医疗保健健康预警监控系统的设计与实现
  • EmotiVoice能否生成方言情感语音?粤语、川话实测
  • 什么是高带宽内存3(HBM3)?关于HBM3的架构、应用场景和性能表现
  • vue基于springboot的连锁超市销售商城 进销存员工与分析系统的设计与实现
  • AI率一夜飙红后,我用这套方法把论文拉回安全线(降AI率实测版)
  • vue基于springboot的基于建筑物识别的无人驾驶车辆路径规划系统
  • 启天 M 系列 Smart Power On/Fast boot 置灰?2 步解锁修改权限!
  • 告别繁琐问卷设计!百考通AI智能助手,5分钟生成专业调研问卷
  • 百考通AI:你的智能学术助手,让毕业论文写作化繁为简
  • IntelliJ IDEA 2025.3 正式发布
  • MyBatis-Flex 来了!完爆MyBatis-Plus?
  • 神经紧张素受体SORT1
  • 高盐高铵根工业废水去除重金属
  • 某211高校讲师晒工资条,网友:公积金数额令人瞩目...
  • Nature Electronics 一种用于多模态皮肤信号监测的柔性触觉接口
  • 小鼠T细胞激活:如何系统解析其发育分化与免疫功能表征?
  • 基于springboot和vue的民航飞机票务管理系统设计与实现