Flask 和 Django 对比
malong 发布于 2021-03-13

Flask

Flask是一个免费的、开源的micro-web框架,它是用Python编程语言编写的,可以轻松地生成可伸缩的web应用程序。这里的“微”并不意味着框架缺乏功能,而是意味着核心是不复杂和可扩展的。有一些Flask不包含的内容,比如上传处理、ORMs(对象关系映射器)、数据库抽象层、身份验证、表单验证等,但是这些功能可以使用预先存在的外部库进行集成。微框架是基于WSGI的工具Werkzeug,即Web服务器网关接口和Python的模板引擎Jinja。一些使用Flask的知名组织有Reddit、Netflix、Lyft、Airbnb、Uber等。


Django

Django是一个开源的全栈web框架,与Flask不同,它遵循模型模板视图(Model Template View,MVC)的体系结构风格。Django有助于用更少的时间和更少的代码构建具有可重用特性的更好的web应用程序。它遵循“不要重复自己”的原则,主要关注尽可能多地实现自动化。它有许多功能,比如用于测试、表单序列化、验证、缓存框架、内部调度等的轻量级web服务器。一些使用Django的公司有Udemy、Instagram、Quora、YouTube等。


数据库

Flask不支持ORM框架,因此开发人员可以自由选择适合其应用程序的ORM。然而,Django提供了一个强大的ORM和迁移管理工具,使它更容易开始使用。Django支持许多关系数据库,如Oracle、MySQL、SQLite、MariaDB和PostgreSQL。Flask不仅支持关系数据库,还支持MongoDB等非关系数据库。Django中的ORM使得创建模板、视图、表单等变得很容易,而flask不支持数据模型。


项目大小

如果您打算使用较小的web应用程序,那么Flask将是一个最佳选择,因为它非常适合具有高负载的小型和非复杂的web应用程序。另一方面,Django是大型项目的最佳选择,因为它是为大型、复杂和处理高流量的应用程序而设计的。由于Flask是模块化的、高度灵活的,并且您可以控制其中的所有内容,因此将其放大可能会变成容易出错的复杂代码。在Django中,由于它提供了功能齐全的功能,因此比较容易扩展。


性能

Flask在性能上肯定会优于Django,并且比Django快得多,因为它的功能更少,层次更少,而且是一个轻量级的框架。Django提供了许多Flask中没有的功能,用于快速开发,因此与对应的Flask相比,性能有所下降。


安全

Flask和Django提供了类似的机制来防止web应用程序攻击和其他威胁。Django有一个内置系统来防止常见的攻击,如跨站点请求伪造(CSRF)、跨站点脚本(XSS)、SQL注入等。这反过来又有助于防止或减轻攻击者在浏览器中执行脚本、使用其他用户的凭据登录以及在浏览器中执行任意SQL代码的攻击数据库。由于Flask应用程序要小得多,因此更容易保护,因为可攻击的区域更少。但是,由于Flask依赖于外部安全扩展,这可能意味着如果扩展本身受到损害,这将导致Flask web应用受到损害。


路由系统和安全

路由是任何web应用程序的重要组成部分,这两个框架都支持路由和基于类的视图。它创建通用资源定位器(URL),然后将它们映射到各自的函数,然后再确定加载URL时要执行什么。在Django中,URL和视图定义在网址.py以及视图.py. 要在Django中访问request对象,您必须显式传递它,而在Flask中,请求对象是全局的,因此可以轻松访问。


其他

与Flask相比,Django在GitHub上的人气稍微领先一些,明星也多了一些。但是Flask在Django被评为2018年度最著名的pythonweb框架5年后发布,它拥有一个特殊的粉丝群。
Flask的文档非常丰富,非常欢迎想要动手使用Flask的初学者。它包含了详细的解释,涵盖了从安装到部署的所有内容,并且比Django具有更低的学习曲线。同时,Django的文档比Flask要广泛得多,因为它是一个完整的堆栈框架,而不是一个极简的框架。此外,还有一个随时可用的管理系统,它不在Flask中。Django中有一些文件在启动项目时自动出现,初学者很难理解。另一方面,Flask项目中的每一行都是由您编写的,您从一开始就可以完全控制它。


malong
关注 私信
文章
35
关注
0
粉丝
0