Flask与Django的区别

Flask

Flask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者一定会如此感慨,除非二者均为深入使用过 Flask自由、灵活,可扩展性强,第三方库的选择面广,开发时可以结合自己最喜欢用的轮子,也能结合最流行最强大的Python库 入门简单,即便没有多少web开发经验,也能很快做出网站,非常适用于小型网站 非常适用于开发web服务的API 开发大型网站无压力,但代码架构需要自己设计,开发成本取决于开发者的能力和经验,各方面性能均等于或优于Django。Django自带的或第三方的好评如潮的功能,Flask上总会找到与之类似第三方库 Flask灵活开发,Python高手基本都会喜欢Flask,但对Django却可能褒贬不一 Flask与关系型数据库的配合使用不弱于Django,而其与NoSQL数据库的配合远远优于Django Flask比Django更加Pythonic,与Python的philosophy更加吻合

Django

Django太重,除了web框架,自带ORM和模板引擎,灵活和自由度不够高。Django能开发小应用,但总会有“杀鸡焉用牛刀”的感觉 Django的自带ORM非常优秀,综合评价略高于SQLAlchemy Django自带的模板引擎简单好用,但其强大程度和综合评价略低于Jinja。Django自带ORM也使Django与关系型数据库耦合度过高,如果想使用MongoDB等NoSQL数据,需要选取合适的第三方库,且总感觉Django+SQL才是天生一对的搭配,Django+NoSQL砍掉了Django的半壁江山 Django目前支持Jinja等非官方模板引擎 Django自带的数据库管理app好评如潮 Django非常适合企业级网站的开发:快速、靠谱、稳定 Django成熟、稳定、完善,但相比于Flask,Django的整体生态相对封闭 Django是Python web框架的先驱,用户多,第三方库最丰富,最好的Python库,如果不能直接用到Django中,也一定能找到与之对应的移植 Django上手也比较容易,开发文档详细、完善,相关资料丰富

 

Flask是基于Python的微框架 。Flask是由奥地利开发商Armin Ronacher于2010年4月1日发布的。微框架意味着Flask旨在保持其重量轻和简单但仍然可以进行高度扩展。Flask的真正力量在于它非常灵活。

 

比较与对比,Flask与Django

使用以下因素对Django和Flask进行的深入比较:

  1. 流行度:用法和案例
  2. 入门:文档和导航轻松
  3. 模板引擎和系统
  4. 路由系统
  5. 用户灵活性
  6. 管理系统的可用性
  7. 开发速度

 

流行度:用法和案例

不少顶级网站使用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框架,必须对基础知识有更深入的了解。

每个框架的区别和好处在于你希望实施哪种项目。

主要对比包括:

  1. Flask提供了灵活性,简单性和细粒度的控制。
  2. Flask不受限制,让你决定如何实现应用程序。
  3. Django为你的Web应用程序开发提供了管理面板,数据库界面,目录结构和ORM的全方位体验。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值