Django、Flask和FastAPI是Python Web框架中的三个主要代表。这些框架都有着各自的优点和缺点,适合不同类型和规模的应用程序。

  1. Django:

    Django是一个全功能的Web框架,它提供了很多内置的应用程序和工具,使得开发Web应用程序更加容易。Django采用了MTV(模型-模板-视图)设计模式,提供ORM等强大的功能,因此适合构建大型、复杂的Web应用程序,如社交网络或电子商务网站。Django的主要优点在于快速开发、自带管理后台、丰富的文档以及广泛的社区支持。但是,Django也很庞大,可能导致性能较低,并且学习曲线较陡峭。

  2. Flask:

    Flask是一个轻量级的Web框架,它没有像Django那样的内置应用程序和工具,因此适合用于小型Web应用程序和原型的快速开发。Flask框架非常灵活,易于扩展,而且学习曲线相对Django来说更加平滑。由于其轻量级特性,Flask可以很好地与其他Python库集成,如SQLAlchemy等。但是,相对于Django,Flask缺少某些功能,如ORM等。

  3. FastAPI:https://fastapi.tiangolo.com/zh

    FastAPI是一个较新的Web框架,它采用了异步编程模型和类型提示,性能非常出色。FastAPI支持OpenAPI(以前称为Swagger)规范,并提供自动生成API文档的功能。FastAPI易于使用、快速开发、高性能的特性使其成为开发高吞吐量API的首选框架。但是,由于其年轻的生态系统,FastAPI缺少一些Django和Flask所拥有的库和工具。

在使用场景方面,Django适用于需要处理大量数据或实现复杂业务逻辑的应用程序,而Flask适用于小型应用程序或快速原型开发。FastAPI则适用于开发高吞吐量API和微服务。

市场份额方面,据调查显示,2021年Django在全球Python Web框架中市场占有率最高,其次是Flask。FastAPI作为新兴框架,市场占有率尚不明确。

未来趋势方面,三者都有其优点和优秀的社区支持,在不同领域的应用中仍然有着广泛的前景。但是,随着Python生态系统的不断壮大,可能会涌现更多的Web框架,这将影响三者的市场份额。

以下是使用Django、Flask和FastAPI实现Hello World的代码:

安装依赖

requirements.txt

# async web framework
uvicorn==0.23.2
fastapi==0.101.1 # sync web framework
Flask==2.3.2

pip install -r requirements-sync.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

创建一个HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Hello VipSoft
</body>
</html>

Flask Demo

flask_demo.py

#!/usr/bin/env python
import logging
import os from flask import Flask # 指定静态页面的地址
app = Flask(__name__, static_url_path="/static/") port = int(os.getenv("PORT", 8080)) # 启动后的首页,
@app.route("/")
def get_index():
return app.send_static_file("index.html") # 使用@app.route装饰器定义了一个路由。在这个路由中,当浏览器请求/hello路径时,会执行名称为hello的函数并
@app.route('/hello')
def hello():
return 'Hello, Flask!' # 启用时,指定端口 8080,其它默认
if __name__ == "__main__":
logging.root.setLevel(logging.INFO)
logging.info("Starting on port %d ", port) app.run(port=port)

查看效果

FastAPI Demo

fastapi_demo.py

#!/usr/bin/env python
import logging
import os from fastapi import FastAPI
from fastapi.responses import FileResponse # 指定静态页面的地址
app = FastAPI() port = int(os.getenv("PORT", 8080)) PATH = os.path.dirname(os.path.abspath(__file__)) @app.get("/")
async def get_index():
return FileResponse(os.path.join(PATH, "static", "index.html")) @app.get("/hello")
async def hello():
return {"message": "Hello, FastAPI!"} if __name__ == "__main__":
import uvicorn logging.root.setLevel(logging.INFO)
logging.info("Starting on port %d ", port) uvicorn.run(app, port=port)

查看效果

Python Web:Django、Flask和FastAPI框架对比的更多相关文章

  1. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  2. python web django base skill

    web框架本质 socket + 业务逻辑 框架实现socket tonado node.js 使用WSGI实现socket django flask 自己实现框架思路 wsgiref socket ...

  3. 说什么也要脱单——Python WEB开发:用Tornado框架制作简易【表白墙】网站

    先来哔哔两句:(https://jq.qq.com/?_wv=1027&k=QgGWqAVF) 今天我们要用Python做Web开发,做一个简单的[表白墙]网站.众所周知表白墙的功能普遍更多的 ...

  4. 【简说Python WEB】Flask应用的文件结构

    目录 [简说Python WEB]Flask应用的文件结构 1.文件结构的目录 2.配置程序--config.py 3.app应用包 4.剥离出来的email.py 5.蓝本(BLueprint)的应 ...

  5. 在学习python的Django\Flask\Tornado前你需要知道的,what is web?

    我们都在讲web开发web开发,那到底什么是web呢? 如果你正在学习python三大主流web框架,那这些你必须要知道了 软件开发架构: C/S架构:Client/Server    客户端与服务端 ...

  6. python web -- django

    一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...

  7. python web——Django架构

    环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...

  8. python web开发flask框架 安装与环境

    # encoding:utf-8 # 从flask这个框架中导入Flask这个类 from flask import Flask # 初始化一个Flask对象 # Flasks() # 需要传递一个参 ...

  9. Python Web 之 Flask

    FLASK 一.概述 flask是一个基于python并依赖于Jinja2模板引擎和WerkZeug WSGI(Web Server Gatewey InterFace.web)服务的框架 WSGI: ...

  10. [flask/python/web] 解析flask web开发(Miguel著)一书第11章主页不显示博文表单的问题

    ---------------------------------------------以下内容2017.7.14更新---------------------------------------- ...

随机推荐

  1. 2021-12-31:给定一个arr,里面的数字都是0~9, 你可以随意使用arr中的数字,哪怕打乱顺序也行, 请拼出一个能被3整除的,最大的数字,用str形式返回。 来自去哪儿网。

    2021-12-31:给定一个arr,里面的数字都是0~9, 你可以随意使用arr中的数字,哪怕打乱顺序也行, 请拼出一个能被3整除的,最大的数字,用str形式返回. 来自去哪儿网. 答案2021-1 ...

  2. uni-app 打包发行

    1.云端 发行-原生App-云打包 2.离线 运行-原生App本地打包-生成本地打包资源,如果提示安装依赖包,安装即可 注意:项目的AppID不能为空,请在该项目下的manifest.json中重新获 ...

  3. flask目录结构

  4. flutter填坑之旅(有状态组件StatefulWidget)

    今天我们来看看flutter的StatefulWidget(有状态组件),最常用就是app 主页的底部导航栏的应用 效果图 首页 关于 我的 statefull-widget-learn .dart ...

  5. 基于 python3+nginx 的 Jupyter Notebook 服务端 ssl 访问

    引言 Jupyter Notebook(原名 ipython)可是科学计算界的必备工具,友好的界面,方便的交互,支持 Markdown,集中的极客们想要的一切特点,同时又制作的如此优雅和精美,真是难能 ...

  6. unity添加Mysql的dll以及发布的问题

    最近在做一个unity项目中,要读取数据库,还是MySql的数据库.遇到了很多问题,写出来供大家参考一下. 关于unity引用第三方的Mysql.data.dll的问题: 这个地方有一个难点,正常的C ...

  7. .net 项目静态文件自动压缩打包

    打包工具选型 在 ASP.NET MVC 时代,我们常使用 BundleCollection 设置需要打包压缩的 js 和 css 文件,运行时框架会自动处理打包压缩过程并将最终结果传入响应. ASP ...

  8. AWSBackup:备份您的云计算资源及数据

    目录 <AWS Backup:备份您的云计算资源及数据> 背景介绍 随着云计算技术的不断普及,越来越多的企业开始将云计算资源视为其关键业务数据的潜在来源.同时,随着数据价值的不断增加,备份 ...

  9. asp.net程序通过Microsoft Azure令牌授予流获取UserInfo终结点实现单点登录--隐式授予流(OIDC协议)

    1. Microsoft Azure令牌授予流 令牌授予流种类如下: 本章节采用: 隐式授予流: 2. 隐式授予流的实现 流程:重定向到authorize--->拿到access_token-- ...

  10. C++ 数独游戏

    C++ 数独游戏 直接上代码: 1 // 数独 sudoku 2 3 #include <iostream> 4 5 using namespace std; 6 7 int P[9][9 ...