Django&Flask区别

Flask

  • Flask 本身只有一个内核,几乎所有的功能都需要用第三方的扩展来实现。
  • Flask 没有默认使用的数据库,默认依赖两个外部库:Jinja2 模板引擎和 WSGI 工具箱(采用的时 Werkzeug 路由模块)
  • Flask  自由、灵活,可扩展性强,第三方库的选择面广,开发者可以根据需求结合自己顺手的轮子
  • Flask  非常适用于小型网站,开发web服务的API,各方面性能均等于或优于Django

Flask常用扩展包:

  • Flask-SQLalchemy:操作数据库;
  • Flask-script:插入脚本;
  • Flask-migrate:管理迁移数据库;
  • Flask-Session:Session存储方式指定;
  • Flask-WTF:表单;
  • Flask-Mail:邮件;
  • Flask-Bable:提供国际化和本地化支持,翻译;
  • Flask-Login:认证用户状态;
  • Flask-OpenID:认证;
  • Flask-RESTful:开发REST API的工具;
  • Flask-Bootstrap:集成前端Twitter Bootstrap框架;
  • Flask-Moment:本地化日期和时间;
  • Flask-Admin:简单而可扩展的管理接口的框架

Django

  • Django采用MVT设计模式
  • 重量级web框架,功能齐全,除了web框架,自带ORM和模板引擎,提供一站式解决的思路,能让开发者不用在选择应用上花费大量时间
  • 自带ORM使Django和关系型数据库耦合度过高,如果要使用非关系型数据库,需要使用第三方库
  • 成熟、稳定、开发效率高、相对于Flask,Django的整体封闭性比较好,适合做企业级网站的开发
  • 开发文档详细、完善、资料丰富, python web框架的先驱,第三方库丰富

Django原生提供众多功能组件 :

  • 提供项目工程管理的自动化脚本工具
  • 数据库ORM支持(对象关系映射,英语:Object Relational Mapping)
  • 模板
  • 表单
  • Admin管理站点
  • 文件管理
  • 认证权限
  • session机制
  • 缓存

两者区别

  1. 路由映射 : Django通过父类 View 中的 dispath 方法来进行判断本次请求方式具体是 GET 还是 POST 等; 浏览器请求服务器:

         Flask中,路由是通过装饰器给每个视图函数提供的, 而且一个视图函数可以接收多种请求方式,在函数内部可以通过 request.method 得到当前请求方式,进行不同的逻辑处理

  2. Django 使用终端命令创建项目和创建应用,创建应用后自动携带一系列文件(admin & models & tests & views & migrations目录)

  3. 模板对比 : Flask可以将任意数量的参数传递给过滤器,Django使用冒号来分隔过滤器和参数,因此Django模板语言的过滤器只能传递一个参数

  4. Flask 提供多种上下文变量 : 应用上下文(current_app[存储应用程序中的变量],g[临时变量,充当者中间媒介的作用,可利用它传递一些数据])

                 请求上下文(request[http请求的内容],session[会话中的用户信息])

    •   请求上下文:保存了客户端和服务器交互的数据
    •   应用上下文:flask 应用程序运行过程中,保存的一些配置信息,比如程序名、数据库连接、应用信息等
    • 上下文中的对象只能在指定上下文中使用,超出范围不能使用

  5. Flask 使用蓝图使模块结构化,Django 使用子应用的形式进行拆分

原文地址:https://www.cnblogs.com/hsmwlyl/p/10574176.html

时间: 2024-10-25 16:53:43

Django&Flask区别的相关文章

在 Django/Flask 开发服务器上使用 HTTPS

使用 Django 或 Flask 这种框架开发 web app 的时候一般都会用内建服务器开发和调试程序,等程序完成后再移交到生产环境部署.问题是这些内建服务器通常都不支持 HTTPS,我们想在开发的时候就能够使用和测试 HTTPS,不想还没测试就部署到生产环境,所以我们需要内建服务器能支持 HTTPS. 这个问题可以通过一个外部程序 stunnel 来解决,stunnel 的作用是通过 OpenSSL 库对 TCP 会话进行加密,建立起一个安全通道,保护没有加密功能或未加密的程序.其主要功能

tornado django flask 跨域解决办法(cors)

XMLHttpRequest cannot load http://www.baidu.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://10.16.16.25:9988' is therefore not allowed access. tornado 这个就是典型的cors,允许后端允许跨域的方法.第二种方法,反向代理还在实践中 #!/usr/bi

python常用web框架性能测试(django,flask,bottle,tornado)

测了一下django.flask.bottle.tornado 框架本身最简单的性能.对django的性能完全无语了. django.flask.bottle 均使用gunicorn+gevent启动,单进程,并且关闭DEBUG,请求均只返回一个字符串ok. tornado直接自己启动,其他内容一致. 测试软件为 siege,测试os为cenos6 64位,测试命令为: 1 siege -c 100 -r 100 -b http://127.0.0.1:5000/ django测试结果为: 1

django flask缓存memcache的key生成方法介绍

去年的一个django项目中,使用了memcache作为系统缓存,并实现多台机器上的缓存共享.配置的cache如下图所示: 最近在项目调试过程中,发现memcache在进行缓存时,使用的key并不是实际写入的key,一度我还以为是不是缓存的位置出BUG了..想找下到底是存的是什么key: telnet 10.200.75.11:11211 trying 10.200.75.11...Connected to 10.200.75.11.Escape character is '^]'. get s

总结django flask模板不同的地方

一.应用AngularJS , 对{{}}的处理不同 1.django模板使用AngularJS:{ % verbatim % }姓名: {{ firstName + " " + lastName }}{ % endverbatim % } 2.flask模板使用AngularJS:解决flask jinja2和angularJS变量冲突的方法{ % raw % } 姓名: {{ firstName + " " + lastName }} { % endraw %

论Flaks与Django的区别

1. jiaji2和DjangoTemplates模板引擎相比,jiaja2语法更简单 2. 耦合 3. 模型 3.1 模型定义 3.2 模型数据查询 Django: 自带ORM(Object-Relational Mapping 对象关联映射)和模板引擎,支持JinJa等非官方模板引擎,灵活度不高自带ORM使Django和关系型数据库耦合度过高,如果要使用非关系型数据库,需要使用第三方库自带数据库管理app成熟.稳定.开发效率高.相对于Flask,Django的整体封闭性比较好,适合做企业级网

Flaks与Django的区别

1. jiaji2和DjangoTemplates模板引擎相比,jiaja2语法更简单 2. 耦合 3. 模型 3.1 模型定义 3.2 模型数据查询 Django: 自带ORM(Object-Relational Mapping 对象关联映射)和模板引擎,支持JinJa等非官方模板引擎,灵活度不高自带ORM使Django和关系型数据库耦合度过高,如果要使用非关系型数据库,需要使用第三方库自带数据库管理app成熟.稳定.开发效率高.相对于Flask,Django的整体封闭性比较好,适合做企业级网

Django框架与Flask框架的区别

Django与Flask的区别 Django: 轻量级web框架,只有一个内核,默认依赖两个外部库:Jinja2 模板引擎和 Werkzeug WSGI 工具集,自由,灵活,可扩展性强,开发者可以根据需求自己造轮子 适用于做小型网站以及web服务的API,开发大型网站无压力,架构需自行设计 与关系型数据库结合不弱于Django,而与非关系型数据库的结合远远优于Django Flask: 重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择应用上花费大量时间 自带ORM(Obje

[转]回答--python django学的很迷茫怎么办?

作者:王一链接:http://www.zhihu.com/question/26235428/answer/36568428来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 很多程序员,在学习一门新技术的时候,都会陷入像题主你这样迷茫的状态.我也一样.而且不止陷入一次两次.比如学习新的框架的时候,学习新的语言的时候,学习移动开发的时候. 这事儿多了以后,我就在想.不对,肯定有哪里不对,看着StackOverflow也好,Github也好,上面那么多的高手,回答各种问