Web框架使Web开发人员的开发尽可能简单。然而,Python是最流行的编程语言之一,它在后端开发中的应用得到了许多贡献。
Python有许多web框架。这些框架分为宏观和微观两类。TurboGears、Web2Py、Pyramid和Django是Python的一些宏web框架。同时,烧瓶、樱桃糖和瓶子都是微框架的例子。
然而,这两类中最常用的例子是Django和Flask。因此,让我们看看这两个框架,以帮助您确定哪些框架值得花更多时间学习。
框架的基本结构
尽管是Python框架,Django和Flask的体系结构却完全不同。让我们看看他们的架构如何影响你作为用户的选择。
django的结构
由于Django用于构建更复杂的基于Python的web应用程序,因此它有一个健壮的体系结构,可以实现可伸缩性。它的模型-视图-模板(MVT)结构使其成为全堆栈开发的完美框架。因此,如果你正在寻找一种方法来帮助开发Web开发的前端和后端,并且使用Python作为服务器端语言,Django仍然是最好的选择。
除了提供广泛的开发包和预先创建的Python文件结构之外,Django还提供了内置的对象关系映射器(ORM),使其能够灵活地访问各种数据库。本质上,您不必编写许多查询来**或调用数据库中的对象。
当您通过Django的模型创建表时,您所需要做的就是在单个对象中定义数据库中这些表的属性。将表移动到数据库后,生成这些表的原始查询将自动提交到迁移文件。
因此,Django的ORM可以帮助您处理为数据库编写单独查询所带来的额外工作。如果您想更专注于使您的网站工作,而不必担心配置任何第三方数据库注入,Django可能是一个选择。
烧瓶结构
与Django相比,Flask提供了最小的架构。这是一个微框架,没有Django那样复杂。与Django的MVT架构不同,Flask遵循更常见的模型-视图-控制器(MVC)结构。
然而,Flask的视图和控制器分别与Django的模板和视图同义。这意味着,您将在Flask中获得控制器,而不是Django的视图。Flask的视图占用了Django模板的功能。
与Django不同,在虚拟环境中安装Flask并打开项目时,会得到一个空文件目录。这意味着您需要开始手动创建文件。
因此,如果你想避免Django的复杂结构,烧瓶是一个很好的选择。然而,由于它是轻量级的,Flask并没有提供Django那么多的内置包。为了在Flask中使用ORM特性,需要一个名为SQLAlchemy的第三方数据库注入包。
相关:每个程序员都应该知道的重要SQL命令
易于学习和深入学习的机会
就易学性而言,Django涉及到很多曲折,可能会让你感到无聊。然而,Flask可能更值得学习,因为在让你的应用程序工作的过程中涉及到的一些调整。
由于Django的复杂性和在各种开发角度的广泛应用,例如其REST框架在可浏览API开发中的作用,学习曲线可能会变得混乱。但考虑到这一点,功能本身可能是学习Django的好理由。
尽管Flask也有用于构建API的REST扩展,但它仍然没有提供Django提供的全功能内置API结构。但是,从总体上看,Flask更适合初学者。
由于您在Flask中建立了大部分连接并构建了自己的结构,因此它使您能够基本了解使用Python进行web开发的工作流。与Django不同,它是一个直截了当的框架,专注于构建您想要的内容,而不必失去对文件连接方式的控制。
如果您还没有太多的Python知识,那么学习Flask可能是最好的开始。此外,在Flask中编写代码与编写纯Python非常相似。
然而,如果您的目标是选择一个更具挑战性的Python框架,让您更多地了解web开发的标准实践——而不太在意内部连接,那么Django可能是正确的选择。这并不意味着你不能用Flask进行更深入的研究——正如前面指出的,这是一个开始学习Python web框架的好方法。
用户群和社区
尽管Flask易学且重量轻,但在受欢迎程度方面落后于Django。Django的健壮性、版本发布的稳定性以及使用Django开发web应用程序的快速性是大多数开发人员选择该框架的一些原因。
看看他们关于堆栈溢出的趋势,Django比Flask讨论得更多一些。这意味着当你遇到问题时,有一个大型的Django社区可以求助。然而,就社区支持而言,这并不意味着Flask也不是一个框架。
此外,他们的受欢迎程度之间的差异也不那么显著。根据JetBrains网站上的2020开发者调查,Django的受欢迎程度为49%,而Flask的受欢迎程度为46%。这只差3%。
仅此一项统计数据就可以平息您对Flask支持社区可用性的恐惧和焦虑。所以,无论你发现自己多么困窘,总有一个解决办法可以依靠。
每个框架提供什么样的项目类型?
Django的一个特性是,您可以创建多个应用程序,并通过专用URL链接它们。这使得Django成为构建需要未来可扩展性的更复杂应用程序的首选框架。
然而,使用Flask构建复杂的应用程序也是可能的,但这与它当前的架构并不匹配。它更适合于构建不需要复杂基础设施的简单应用程序。
尽管Django提供了可伸缩性,但您仍然无法完全控制其单元。烧瓶,另一方面,提供了简单性,但让你的手浸入其各种组件的灵活性。这是因为,在Flask中,您倾向于自己编写大部分块,而对第三方软件包的依赖性最小。
您应该选择哪种python web框架?
我们已经讨论了这两个框架,但没有将一个置于另一个之上的目的。因此,根据您现在所知,开始学习的最佳Python web框架取决于您现有的能力和用例。
但是,更好的方法是了解Python的基础知识。然后,在进入复杂框架之前,您可以先尝试简单框架。无论您选择什么,这两个框架都有各自的专业领域。所以,你也可以在这个基础上做出决定。