当前位置: 首页 > 科技观察

一网打尽,总结常见的Pythonweb开发框架

时间:2023-03-16 10:53:39 科技观察

今天,Python中有很多开发框架,可以帮助你轻松创建web应用。Web开发框架存在的意义在于它可以快速方便地构建应用程序,而不必关心不必要的技术细节(协议、消息、数据结构)。截至2020年,已经有大量基于Python创建的Web应用程序。国外比较知名的有youtube.com、instagram、reditt,国内的知乎、豆瓣等,这些网站都是使用不同的web框架实现的,今天我们就一一说说。1.DjangoDjango应该是Python最著名和最具代表性的web框架了。它的名字来源于法国作曲家兼吉他手DjangoReinhardt。2000年初,一家报社的两名程序员为了给报社开发在线应用,开始用Python编写网站,最后将他们的工作总结成一套开源框架,也就是今天的Django。Django遵循MVC开发模型,并将该模型命名为MTV(MTV模型是Python特有的)MModel(数据模型,用于后端数据库模型定义和处理模块)TTemplates(模板,用于前端展示信息)VView(视图,用于接收客户端请求、处理Model、渲染和返回信息给客户端等)(1)Django优缺点优势:一站式开发解决方案,封装成各种组件高度集成成熟,完善的配置用户模型,权限认证体系完善的ORM数据库管理功能,简单方便内置后台管理功能缺点:配置相对复杂简单应用使用Django,杀鸡用牛刀的感觉(2)Django安装和初始化Django下载方法有两种:直接通过pip安装pipinstallDjango==3.0.3下载安装gitcloneth粗略源码https://github.com/django/django.git安装完成后新建一个django项目test_django/django-admin.pystartprojecttest_djangocdtest_django通过startproject参数输入项目路径输入启动服务命令启动最简单姜戈服务。pythonmanage.pyrunserver最后访问默认路径http://127.0.0.1:8000就可以看到django项目启动的效果了。成功启动,现在您可以编写Django代码了。2、Flask如果说Django是大而全的解决方案的代表,那么Flask就是小而精的解决方案的代表。Flask是基于Werkzeug工具箱编写的轻量级Web开发框架。主要针对需求简单、项目周期短的小型Web应用。Flask的框架比较灵活。核心思想是Flask只完成基本功能,其他功能由各种第三方插件完成,实现了高度定制化的模块。(1)常用的Flask插件如下:Flask-SQLalchemy:操作数据库;Flask-migrate:管理迁移数据库;Flask-Mail:邮件;Flask-WTF:表格;Flask-script:插入脚本;Flask-Login:验证用户状态;Flask-RESTful:开发RESTAPI的工具;Flask-Bootstrap:集成前端TwitterBootstrap框架;Flask-Moment:本地化日期和时间;Flask的两大核心应用是Werkzeug和模板引擎Jinja,其他都可以自由组合,适合有洁癖的程序员。(2)Flask的优缺点优点:项目结构和配置简单组件可以自由拆解小项目或者临时项目比较合适缺点:高度定制化的组件带来各个组件之间严重的兼容性问题不适合大规模应用,例如,blueprint(蓝图)机制与Django的url配置相去甚远(二)Flask安装我们直接通过pip安装pipinstallflask,在任意位置新建一个py文件hello.py。fromflaskiimportFlaskFlaskapp=Flask(__name__)@app.route("/")defhello():return"HelloWorld!"if__name__=="__main__":app.run()输入启动命令:pythonhello.py*Runningonhttp://127.0.0.1:5000/(PressCTRL+Ctoquit)最后访问默认地址http://127.0.0.1:5000打开flask默认启动页面。3.Tornado严格来说,Tornado并不是一个web框架,而是一个基于Python的异步处理框架,只自带WSGI处理相关的功能。Tornado和Flask一样,除了基本的web处理功能和模板,其他功能组件需要自己组装。(1)tornado优缺点优点:短小紧凑,性能更好,不依赖Python多进程/多线程支持异步非阻塞IO处理方式支持websocket缺点:过于精简,只适合纯接口服务或小网站应用(2)Tornado安装也是使用pip安装。pipinstalltornado创建一个hello.py代码文件。importtornado.webimporttornado.ioloopclassIndexHandler(tornado.web.RequestHandler):defget(self):self.write('helloworld')if__name__=='__main__':#Createapplicationobjectapp=tornado.web.Application([(r'/',IndexHandler)])#绑定监听端口app.listen(8888)#启动web程序tornado.ioloop.IOLoop.current().start()最后执行pythonhello.py通过http://127.0启动tornado服务。0.1:8888访问初始化页面以上三个是Python开发中经常用到的web框架,一些不太常用的也会简单介绍一下。4.TurboGears据说豆瓣早期就是基于这个框架开发的。TurboGears是在几个著名的Python项目上组装的框架,包括SQLAlchemy、WebOb、Repoze和Genshi。从某种意义上说,TurboGears是粘合在一起的多个开源组件。它也和Django一样采用了MVC架构。TurboGears的优势:支持聚合强大的对象关系映射器事务系统支持多数据库事务多数据库支持可重用的代码片段作为模板,具有很大的灵活性,可以与非标准组件对接支持分片模板系统使设计人员更容易设计5.BottleBottle和Flask一样,也是一个轻量级的web开发框架。它不依赖于Python标准库之外的任何库。它创建于2009年,最初是一个由模板、路由和WSGI抽象层组成的最小工具。对于寻求最轻量级的WSGI服务的程序员来说,它是一个不错的选择,可以用来以最快的速度创建Web服务。Bootle的优点:超轻量级内置模板引擎,支持Jinja2、Mako、Cheetah总结今天给大家介绍一下各种Pythonweb开发框架。我个人常用的框架主要有Django、Flask和Tornado。其他框架较少涉及,也是因为流行度和易用性的关系。关于最常用的三个框架,给大家一个建议:正式项目、大型项目,需要长期开发维护的项目,建议选择Django,一劳永逸,不思量太多了。小项目、临时项目、不怕折腾的可以选择Flask。对于小项目,临时项目或者一些简单的接口服务,可以选择Tornado,因为Tornado天然支持异步,所以很多需要做异步IO服务的人也可以选择Tornado,而且Django3.0也开始全面支持异步,我建议你拭目以待。