后端框架对比:Flask与Django
Posted 全栈式Python后端
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端框架对比:Flask与Django相关的知识,希望对你有一定的参考价值。
你是否正在考虑使用Python开发网站?然后你可能听说过Django和Flask。这两个是Python最受欢迎的Web框架(当然还有更多)。现在的问题是,你使用哪一个?这篇文章旨在简单介绍这两种框架的工作方式,它们的异同,以及在它们之间进行选择时应考虑的几点。
人们希望使用Python做更多的事情,而不仅仅是自动化任务和管理工作流程。为了让Python能很好的实现Web后端开发,所以就有了属于Python的Web框架。
Django是一个Python Web框架,适合时间不多的完美主义者。Django提供了一个功能齐全的Model-View-Controller框架。Django使开发人员无需第三方库和工具即可创建网站。Django于2005年7月15日发布,由Django Software Foundation(DSF)开发和管理。它是免费的并且具有更多版本的开源。
Flask是基于Python的微框架 。Flask是由奥地利开发商Armin Ronacher于2010年4月1日发布的。微框架意味着Flask旨在保持其重量轻和简单但仍然可以进行高度扩展。Flask的真正力量在于它非常灵活。
使用以下因素对Django和Flask进行的深入比较:
流行度:用法和案例
入门:文档和导航轻松
模板引擎和系统
路由系统
用户灵活性
管理系统的可用性
开发速度
流行度:用法和案例
不少顶级网站使用Django和Flask。GitHub和其他站点的统计数据表明,Django比Flask更为流行。这种流行仅归因于开发人员使用Django强大的功能来快速构建和部署复杂的Web应用程序。同样,开发人员使用Flask来加速使用固定内容的网站的开发。一些由Django开发的知名项目(Bitbucket,Eventbrite, Instagram的,Pinterest等)和Flask(LinkedIn,Netflix,Twilio,Uber)。
用户灵活性
这两个框架之间最大的差异之一就是灵活性。 Django 可在不使用太多第三方库和工具的条件下开发各种优秀的Web应用程序。但是,Django缺少部分对模块优化的空间。因此,开发人员使用内置功能创建Web应用程序。这意味着如果开发人员想要修改Django一些默认的设定或者规则,这将不容易。
相反,Flask是一个扩展性很好的Web框架,可以使用各种Web开发库和工具来灵活地开发Web应用程序。对于经验丰富的开发人员可以自由地插入和使用他们喜欢的库和数据库。框架很少会强制开发人员使用什么。相反,开发人员可以转到自己喜欢的技术栈中。
Flask提供了广泛的文档,其中包括部署,安装,快速入门说明以及详细的教程。使用Python的包管理器pip去安装 Flask很容易。
$ pip install flask
上面的pip命令安装Flask及其基本软件包。在Flask上运行代码非常简单(例如,显示“ Hi Welcome”)。它所需要做的只是创建Flask类的实例,然后创建显示“ Hi Welcome”字符串的路由即可。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hi_welcome():
return "Hi Welcome"
if __name__ == "__main__":
app.run()
由于Django的复杂性,Django的文档比Flask 的文档要多得多。同样可以使用pip快速安装Django。
$ pip install Django
在Django中运行代码涉及使用内置命令创建项目,以及使用另一个命令创建应用程序。它的启动命令很方便,因为它有固定的目录结构。
路由系统对于任何Web应用程序或网站都是必不可少的,它可以创建URL并确定在加载URL时显示的内容。
Flask是一个简单,轻量级的Web框架,其route()由装饰器完成。使用上面的“ Hello World”示例,第一行是装饰器。装饰器是将可调用(类)作为参数,然后在返回之前进行修改的函数。使用的字符串还告诉Flask什么URL触发其功能。例如,使用/(http://127.0.0.1:5000 / ),当使用浏览器访问Flask时,它将加载第一页。
对于Django,它采用了包含电池的方法,这使开发人员可以更轻松地完成基本的Web开发任务,例如数据库模式迁移,URL路由和用户身份验证。自定义Web应用程序还提供了自举工具,内置模板引擎和ORM系统,因此在Django中也经历了过程加速。使用urls.py运行内置djangoadmin startproject命令时创建的文件处理路由。要定义路由,需要从Django导入URL方法并创建一个实例,并指定每个参数(关键字参数,现有的URL模块和regex字符串)。默认情况下,该urls.py文件中包含管理网站的内置Django URL 。它告诉Django你从何处加载URL以及指定的模块。
Django使用遵循对象关系映射器(ORM)目录结构和数据库系统的管理系统。由于多个项目具有相同的目录结构,因此在使用Django进行开发时,它增加了全方位的体验。
Flask缺少这些功能,可能需要你安装自定义模块才能将ORM用作开发人员的可选组件。这些选项包括与MongoDB,SQLAlchemy,SQLite等配合使用。如你所见,这是灵活性和易用性之间的权衡。Django附带了构建网站所需的大多数技术组件。Flask纯粹只是框架,允许最终用户做出更多决策。
众所周知,Django框架可为复杂的Web应用程序提供快速的开发速度。由于它具有全部功能,提供所有必要工具。Flask的简单性使经验丰富的开发人员可以在短时间内完成较小的应用程序。Django框架的一个显着优势是可以有活跃的社区,该社区旨在提供有用的内容来扩展应用程序或使你的工作变得更轻松的解决方案。Flask社区目前还不那么庞大,因此找到有用的信息并不容易。
所有Web应用程序都有一个支持用户交互的前端(用户界面)。由于Web应用程序不是静态的,因此它们采用不同的方法来动态生成html。Django和Flask都有不错的模板引擎。
Flask是使用Jinja2模板引擎开发的。它是一种现代且设计友好的模板,允许开发人员在集成沙盒环境的帮助下模拟动态Web应用程序。Jinja2模板包含变量和标签。Flask模板的另一个关键特性是模板继承。以下是一些常用的Jinja2语法的示例:
comments: {# … #}
variables: {{ … }}
statements: {% … %} (Similar to normal programming, Jinja2 statements find usage in a variety of cases, like if-else statements, imports, loops, and macros).
Django使用内置的模板引擎,该引擎允许开发人员轻松定义Web应用程序的面向用户层。此外,开发人员可以使用Django模板语言(DTL)来创建自定义用户界面开发中的模板。Django中的模板语法包括:
single-line comments: {# … #}
multi-line comments: {% comment %} … {% endcomment %}
filters on variables: {{ variable|filter }}
tags: {% … %}
variables: {{ … }}
jinja2模板的灵感来自Django模板语言,因此语法相似。Django模板具有模板继承功能,有关更多信息,请参见Django模板官方文档。
要开始使用Flask和Django框架,必须对基础知识有更深入的了解。
每个框架的区别和好处在于你希望实施哪种项目。
主要对比包括:
Flask提供了灵活性,简单性和细粒度的控制。
Flask不受限制,让你决定如何实现应用程序。
我希望这有助于你对所选择的框架做出清晰的决定。
以上是关于后端框架对比:Flask与Django的主要内容,如果未能解决你的问题,请参考以下文章
Python Web框架:Django vs Flask vs Pyramid