Python常用Web框架Django、Flask与Tornado介绍
作者:springsnow 发布时间:2021-06-24 18:19:35
web框架是什么?
web开发框架是一组工具,同时也提供了非常多的资源,供软件开发人员构建和管理网站、提供web服务、编写web应用程序。它是一个抽象工具,能使开发应用程序和重复使用代码的过程变得更容易。
为什么需要web开发框架?
进行自定义软件开发时,web开发框架让整个过程变得更容易,因而开发速度更快、更高效。许多开发框架都很便宜,这也使得整个客户机的成本更小。
一个被广泛使用的框架安全性更高。这主要依赖于该框架背后的社区,在这里,用户成为长期的测试人员,并可以提供修复。
如果发现了安全漏洞,可以访问框架的网站,告知特定的团队,这样他们就可以修复它。
Python web 目前较火的三大框架:Django、Flask 与 Tornado
1、Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
Django是一个高级的Python Web框架,以快速开发和实用简洁的设计闻名。它由经验丰富的开发人员构建,解决了Web开发的麻烦,因此用户可以专注于编写应用程序,而不需要担心返工。并且它是开源和免费的。
Python 界最全能的 web 开发框架,battery-include 各种功能完备,可维护性和开发速度一级棒。常有人说 Django 慢,其实主要慢在 Django ORM 与数据库的交互上,所以是否选用 Django,取决于项目对数据库交互的要求以及各种优化。而对于 Django 的同步特性导致吞吐量小的问题,其实可以通过 Celery 等解决,倒不是一个根本问题。
特点:
安全系数高,能帮助开发者规避常见错误。
速度特别快,因为它的设计目的是使应用程序非常快地从概念阶段过渡到最终阶段。
扩展性好。
从21世纪初Django成为开源框架到现在,它一直是最佳的归档方式。
Django 的项目代表:
Instagram,Guardian。
2、Flask
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Flask 虽然是微框架,但是也可以做成规模化的 Flask。加上 Flask 可以自由选择自己的数据库交互组件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等异步特性以后,Flask 的性能相对 Tornado 也不逞多让,也许Flask 的灵活性可能是某些团队更需要的。
特点:
包含开发调试器和服务器
有丰富的文档
支持安全cookie
基于unicode
单元测试集成支持
3、Tornado
Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。
天生异步,性能强悍是 Tornado 的名片,然而 Tornado 相比 Django 是较为原始的框架,诸多内容需要自己去处理。当然,随着项目越来越大,框架能够提供的功能占比越来越小,更多的内容需要团队自己去实现,而大项目往往需要性能的保证,这时候 Tornado 就是比较好的选择。
Tornado项目代表:
知乎
总结:
Django适合:开发速度快,初学者或者小团队的快速开发,适合做管理后台类、博客类网站、或者功能十分复杂需求十分多的网站。Django 和 Flask 都行,区别是 Flask 把许多功能交给第三方库去完成了,因此 Flask 更为灵活。
Tornado适合:性能好,高度定制,适合访问量大,异步情况多的网站
来源:https://www.cnblogs.com/springsnow/p/12163456.html
猜你喜欢
- 有的时候我们希望生成一段时间返回,比如从 2022-01-01 00:00:00 后面的 10 天,这么 10 个 datetime 对象,
- JS代码:function showFlash(src,w,h){ html&nbs
- 本文从算法入手同时通过实例来讲解如何在SQL Server数据库中实现最优最简的整个过程。算法是计算机科学中一个重要的研究方向,是解决复杂问
- 1.配置需要python3.7,Chrome或者Edeg浏览器,Chrome驱动或者Edge驱动#需要配置selenium库,baidu-a
- 问:怎样解决mysql连接过多的错误?答:系统不能连接数据库,关键要看两个数据:1、数据库系统允许的最大可连接数max_connection
- 无法打开用户默认数据库,登录失败,这也是SQL Server使用者熟悉的问题之一。在使用企业管理器、查询分析器、各类工具和应用软件的时候,只
- 由于工作的需求,需要用python做一个类似网络爬虫的采集器。虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需
- 本文实例为大家分享了Python实现双人五子棋对局的具体代码,供大家参考,具体内容如下效果:自己需要两个棋子:服务器玩家全部代码:# 案列使
- 如今我使用 Python 已经很长时间了,但当我回顾之前写的一些代码时,有时候会感到很沮丧。例如,最早使用 Python 时,我写了一个名为
- 从技术上来说,在ASP环境中,读入并管理XML文本的主要方法有三种: 创建MSXML对象,并且将XML文档载入DOM; 使用服务器端嵌入(S
- 迭代器模式迭代器模式(Iterator Pattern)是一种常用的设计模式,用于遍历集合中的元素,不暴露集合的内部结构。迭代器模式将集合和
- W3C终于发布了第一个HTML5草案,大家还沉溺在HTML2XHTML转换的快乐和痛苦中时,却又突然发现,HTML5和XHTML2,到底谁是
- oracle服务器没有建立目标数据库的TNS时,在客户端(有权限的情况下)建立dblink语法如下: create database lin
- 代码如下:<% dim objconn,connstr Set objconn =&
- 这篇文章主要介绍了python基于gevent实现并发下载器代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 一个能对访问者进行编号、记录访问次数、IP、时间的统计制作实例我以ACCESS库为例子,其实用SQL SERVER库也只要改一下链接库的语句
- 在my.cnf中设置了sql_mode='STRICT_TRANS_TABLES';却发现还是有非法数据的写入,比如无符号整
- import webbrowser as webimport timeimport oscount=0while count<10:&
- 以查询前20到30条为例,主键名为id 方法一: 先正查,再反查 select top 10 * from (select top 30 *
- javascript上下滑动广告效果 参数说明:客服果果(