前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Django,Flask ,FastAPI 怎么选?

Django,Flask ,FastAPI 怎么选?

作者头像
somenzz
发布于 2021-04-30 03:07:52
发布于 2021-04-30 03:07:52
5.9K0
举报
文章被收录于专栏:Python七号Python七号

阅读大约需要 4.5 分钟

首先我们达成一个共识,框架是用来帮助我们提升效率,节省时间,避免处理那些低级细节的,如果能达到这个目标,就是一个合适的框架。选择合适的框架,会事半功倍。

Python 领域,开发 Web 应用程序的三个主流框架是 Django,Flask 和 FastAPI。它们都非常优秀,但有各自的特点。本文接下来阐述每个框架的优缺点,以帮助你在使用时做出最合适的选择。

Django

Django 是用于构建网站的免费开源 Web 开发框架。它于 2003 年创建,并使用 MTV 模式,也就是 Model-Template-View 模式,如果不使用 Django 的模版语法,也可以认为是 MVC 模式,即 Model-View-Controler,对应三个文件:models.py, views.py, urls.py。

它以其健壮和简单的特性而广受欢迎,地位相当于 Java 领域的 Spring,并被 Instagram,Youtube 等技术巨头使用,找工作面试,Django 也是重头戏。Django 非常流行,极客时间已经有专门的付费教程。其次它的设计哲学与 Python 非常搭配,鼓励代码复用。

优点

Django 框架的代码结构统一且清晰易懂,开发人员可以像做填空题一样添加更多功能,也可以设计自定义的类或接口,即简单也不失灵活性、扩展性。

Django 生态还有一个利器就是 Django Rest Framework(DRF),DRF 可以让你轻松搭建具有 REST 风格的 API,由于它具有模块化和可自定义的架构,在前后端分离的趋势下,使用 Django 构建 Web API 也非常容易。

自带安全性的中间件。Django 通过提供针对联合 SQL 注入和跨站点请求伪造攻击的防御来提供安全性的访问。

Django 生态非常丰富,第三方类适配的类库也非常多,这意味着遇到问题时你并不孤单。

缺点

Django 可能会因为许多可重用的模块而限制了开发速度。它还需要确保以前的版本仍与新版本兼容,从而导致其运行稍慢。

Django Models 没有 mixins,只有简单的继承。

Django 使用的 ORM 是在 SQLAlchemy 之前创建的,因此 Django ORM 的灵活性较差,因此它不如 SQLAlchemy。

Django 的用例

Django 可以处理任何规模和容量的项目。我们可以将其用于简单站点或高性能站点。一些用例如下:

  • 高负荷预订引擎。
  • 购物平台。
  • 学校管理系统。
  • 内置用于内部数据的自定义 CRM 系统。
  • 支持基于 Web 的应用程序的 IOS 和 Android 应用程序。
  • 管理仪表板,基于照片的验证,用于发送用户通知的电子邮件系统等。

简而言之,如果你要做一个上规模,不断扩展的,大规模,商业化的 Web 项目,Django 是你最好的选择。

Flask

Flask 是一个用 Python 编写的微型 Web 框架,可用于开发简约的 Web 应用程序。Flask 带有诸如模板引擎,缓存和身份验证之类的选项。

它的创建是为了使用 Python 编程语言构建 Web 应用程序。它被设计为易用,快速并且可以扩展成为复杂的应用程序或微服务。

Flask 更像是创作者 Armin Ronacher 在 4 月 1 日对愚人节的恶作剧,在其中依赖了Werkzeug 和 Jinja。令人惊讶的是,它受到了社区的赞赏,这使他们在此方面做得更多。

优点

与其他 Web 应用程序框架不同,flask 让你可以完全控制 Web 开发,从而完全控制应用程序和 Web 开发。开发人员有机会“坐在驾驶员席上”,掌管你想做的事情,例如添加外部功能。

Flask 允许进行单元测试,并且由于其内置的开发服务器,集成的支持等,因此可以通过对一些扩展进行调整来过渡到 Web 框架。

Flask 简单易用,非常适合初学者使用,为开发人员提供了更好地学习和理解它的空间。它还使开发人员可以毫不费力地快速创建应用程序。

缺点

Flask 的很多模块由第三方开发,容易引起安全漏洞。

Flask 具有一个单一的来源,表示它将依次处理每个请求,因此,无论有多少个请求,它仍然会轮流处理它们,这会耗费更多时间。

如果开发人员水平不高,更容易使用低质量的代码创建一个不良的 Web 应用程序。

用例

我们可以将 Flask 用于商业项目。它可以帮助你快速入门,但是网站高负荷情况下效果不佳。

你可以快速实施 Flask 项目,例如:

  • 电子商务系统。
  • Facebook / Twitter机器人。
  • 在线社交网络。
  • 静态网站。

如果你要做一些小型个人项目,比如聊天机器人,或者想实现产品的快速原型,或者喜欢自由的编写代码控制程序的流程,那么可以选择 Flask,如果说 Django 是具备半自动驾驶的大型车,那么 Flask 就是让你自由操纵的手动挡小汽车。

FastAPI

FastAPI 是用于构建 Web API 的现代、开源、快速、高性能的 Web 框架,它基于Python 3.6+ 标准类型提示,支持异步,正如它的名字,FastAPI 就是为构建快速的 API 而生。

优点

自动类型检查。这意味着更少的 Bug,即使在深度嵌套的 JSON 请求中,Fast API 也会验证开发人员的数据类型。

集众所长,站在巨人的肩膀上。FastAPI 建立在 JSON Schema(用于验证JSON数据结构的工具),OAuth 2.0(用于授权的行业标准协议)和OpenAPI(这是可公开获得的应用程序编程接口)之类的标准之上。

现代化。FastAPI 使使用称为 graphene-python 的 Python 库轻松构建 GraphQL API

快速、高性能。可以和 NodeJS 和 Go 相提并论。

缺点

由于 FastAPI 相对较新,因此与其他框架相比,社区较小,第三方的教程相对较少。

用例

FastAPI 适用于构建高性能的 API,本身支持异步,如果要构建异步 API,可以优先选择 FastAPI。Netflix 将其用于内部危机管理。它还可以在部署准备就绪的机器学习模型时完美缩放,因为当 ML 模型封装在 REST API 并部署在微服务中时,它在生产中会发挥最佳作用。

比较

我们从软件包,社区,性能,灵活性,职位空缺和培训来进行比较。

软件包丰富程度。Django 具有使代码可重用的大多数软件包,是一个完整的 Web 开发框架,而 Flask 和 FastAPI 是用于构建网站的简约框架,很多功能比如用户系统,后台管理要自己实现。

社区活跃程度。Django 社区是最活跃的社区,这是因为它使用广泛,很多大厂使用,另一方面,Flask 的社区也很繁荣,仅次于 Django。FastAPI 的社区目前还比较小,因为它相对较新。

性能。在性能方面,FastAPI 是领跑者,因为它是面向速度的,其次是 Flask,最后是 Django。

灵活性。灵活性是开发人员非常重视的东西,并且 Flask 比 Django 更灵活。另一方面,FastAPI 在代码方面是灵活的,并且不限制代码布局。因此,我们可以说 Flask 在这三者中是最灵活的。

职位空缺。毫无疑问,Python 网络生态系统中有 Django 要求的职位空缺更多,其次是 Flask,最后是 FastAPI,其数量要少得多,因此,如果你打算快速找到工作,那么 Django 应该是你的首选。

学习成本。FastAPI < Flask < Django。Django 虽然学习起来比较费劲,但是有完善的官方文档和很多在线资料和资源。Flask 既简单又直接,也有丰富的在线资料和资源。而 FastAPI 学习起来更简单直接,不过资源相对较少,因为还需要时间。

最后的话

仔细比较之后,你也许可以选择最适合你的那一个。总而言之,如果你想构建健壮的全栈式网站,那么 Django 是完美的选择,因为它具有多种功能并且在生产中运行良好。

对于需要快速原型化 Web 应用程序并轻松快速地构建 API 的机器学习工程师或开发人员而言,Flask 是理想的选择。

如果你正在寻找速度或可伸缩性,FastAPI 是完美的选择。根据你要使用的框架来选择框架始终是明智的选择。

但是总的来说,它们都很好并且有很好的市场需求。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python七号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Flask 与 Django 先学哪个呢
本文把 Flask 和 Django 做一个比对,因为我对这两个 Python Web 框架都有实际的开发经验。希望我可以帮助您选择学习哪个框架,因为学习一个框架可能会非常耗时 —— 当然也很有趣!
测试开发社区
2020/05/14
1.5K0
Flask 与 Django 先学哪个呢
FastAPI or Flask?从用户出发,才是王道
前段时间,Milvus demo 使用的服务框架从 Flask 切换为 FastAPI,这一改动引发了社区小伙伴们讨论:为什么要改服务框架?改了以后有什么好处?为了解答社区小伙伴们的疑问,Zilliz 数据工程师云梅写下这篇文章。
Zilliz RDS
2021/11/23
3.7K0
2020最值得学习的12款python-web开发框架大盘点
最近JETBRAINS发布了目前最受欢迎的python-web开发框架,可以看到最受欢迎的还是Django和Flask,那么本文就对上榜的12个框架进行分类整理,一起来看看吧!
刘早起
2020/04/22
2.2K0
2020最值得学习的12款python-web开发框架大盘点
Django框架:优缺点、实用场景及与Flask、FastAPI的对比
Django是一个使用Python语言编写的高级Web框架,它提供了快速开发、可重用和可维护的Web应用程序所需的一切组件。在本文中,我们将探讨Django的get和post请求、优缺点、实用场景以及与Flask、FastAPI的对比。
江一铭
2023/06/04
2.3K0
python高并发优选之FastAPI
FastAPI是一个基于Python 3.6+的现代Web框架,它专注于高性能和易用性。FastAPI通过结合多种技术实现了出色的性能,包括异步编程、类型提示和自动文档生成。FastAPI基于Starlette框架,并且使用Pydantic库进行数据验证和转换,从而使RESTful API的开发变得更加容易。
江一铭
2023/06/04
2.1K0
后端开发简介
后端开发是构建应用基石,涉及服务器、数据库和 API。常用框架 Django、Flask、Spring、Express.js 和 Ruby on Rails 各有千秋。选型需考虑开发速度、灵活性、可扩展性、社区支持和性能。The New Stack 提供后端开发最新资讯,助你掌握云原生时代 Serverless 技术。
云云众生s
2025/03/18
1410
后端框架的比较和选择:Django、Flask和FastAPI的优缺点与适用场景
在后端开发领域,选择一个适合项目需求的框架是至关重要的。Django、Flask和FastAPI是Python中备受欢迎的后端框架,本文将深入比较它们的优缺点,并为开发者提供在不同场景下的选择建议。
Echo_Wish
2024/01/30
5.3K0
Python Web 框架 FastAPI
开发人员一直在寻找能够快速有效地构建复杂 API 和在线应用程序的技术。FastAPI 是Python Web 框架领域的一个相对较新的补充,由于其速度、简单性和开发人员友好的特性而迅速受到关注。在本文中,我们将介绍 FastAPI,并解释为什么它已成为开发 Web 应用程序和 API 的流行替代方案。
科技新语
2025/01/14
1320
Python Web 框架 FastAPI
学习FastAPI一些体会
FastAPI 是一个基于 Python 3.7+ 的现代、高性能 Web 框架,专注于构建 RESTful API。它通过结合强类型注解、异步编程、自动文档生成等特性,提供了快速开发 Web API 的能力。同时官方文档也比较全面,也易于学习。性能也比较高,适合投入实际生产。
云帆沧海
2024/01/17
8260
Flask vs. Django—Python开发框架实战比较
在选择一个适合你项目的Web开发框架时,常常会遇到 Flask 和 Django 这两个流行的选择。两者都有其优势和适用场景,本文将探讨它们的特点,并通过代码实例和解析来帮助你更好地做出选择。
一键难忘
2024/04/26
2K0
Flask(1)- 简介
Flask 是一个 Python 实现的 Web 开发微框架,但是这个“微”并不代表着 Flask 功能比较简陋、有所欠缺
小菠萝测试笔记
2021/07/14
5440
Flask(1)- 简介
弹射起步——pythonweb开发Flask框架,前端原生+Flask后端框架+mysql数据库实战(附带小案例)
一是易于学习:Python 是初学者最流行的语言,与 Java 和 C ++ 等其他语言相比,你可以编写更少的代码,减少出错,从而提升效率。不仅如此,它还具有较低的进入门槛,因为它与日常语言相对更相似,可以轻松地理解代码。
淼学派对
2023/10/14
1.6K0
弹射起步——pythonweb开发Flask框架,前端原生+Flask后端框架+mysql数据库实战(附带小案例)
从 Flask 切到 FastAPI 后,起飞了!
本文翻译自 Moving from Flask to FastAPI, 作者:Amal Shaji
Python编程与实战
2024/03/04
1.4K0
从 Flask 切到 FastAPI 后,起飞了!
Django框架,Flask框架和Tornado框架各有什么优缺点
Django:Python 界最全能的 web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。Django 的项目代表:Instagram,Guardian。
江帅帅
2020/07/28
2.5K0
Flask介绍
Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站
星哥玩云
2022/09/14
4540
使用Flask构建简单的Web应用
在当今数字时代,构建高效、可扩展的Web应用程序是开发者们的一项重要任务。Python,作为一种简洁、强大的编程语言,为Web开发提供了丰富的工具和框架。在本篇文章中,我们将探讨使用Python构建Web应用程序的最佳实践,通过代码实例和深度解析来帮助你更好地理解和运用这些技术。
一键难忘
2024/04/17
4880
卧槽!居然有比Flask更好用更简单的框架
今天它的对手 FastApi 框架来啦!FastAPI是一种现代,高性能的Web框架:
龙哥
2020/09/27
4.2K0
卧槽!居然有比Flask更好用更简单的框架
Python和Node.js,应该选择哪种编程语言
每个项目都有其规范和需求,在构建应用程序时,最重要的是选择正确的技术对其进行编码。 在本文中,我们将研究Python和Node.js,以了解它们的优点、缺点和用例,以便你能确定哪一个最适合你的项目。
AiTechYun
2019/08/06
2.8K0
Python和Node.js,应该选择哪种编程语言
FastAPI框架诞生的缘由(下)
原文:https://fastapi.tiangolo.com/alternatives/
somenzz
2020/11/25
2.4K0
python fastapi介绍以及安装
Python是一种非常受欢迎的编程语言,因为它简单易学,同时具有很多强大的功能。 FastAPI是一个基于Python的现代web框架,具有高性能、易于使用和易于扩展的特点,它可以帮助开发人员更快地创建Web应用程序和API。
堕落飞鸟
2023/05/07
1K0
相关推荐
Flask 与 Django 先学哪个呢
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文