今天小编跟大家讲解下有关常见Python的Web开发框架 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关常见Python的Web开发框架 的相关资料,希望小伙伴们看了有所帮助。
在今天 Python里有很多开发框架用来帮助你轻松创建web应用。web开发框架存在的意义就在于可以快速便捷的构建应用 而不用去在意那些没必要的技术细节(协议、报文、数据结构)。
到2020年为止 基于Python创建的的web应用已经非常多了 国外知名的有youtube.com、instagram、reditt、国内有知乎、豆瓣等等。这些网站分别用到了不同的web框架来实现的 我们今天会一一讲到。
1. DjangoDjango应该是Python最知名、最有代表性的Web框架了。它的名字来自于Django Reinhardt 一位法国作曲家和吉他演奏家。在2000年初有一个报社的两位程序员为了给报社的报纸开发线上应用 开始用 Python编写网站 最后把他们的工作总结出一套开源框架 就是今天的Django了。
Django遵循了MVC开发模式 并将这个模式命名为MTV(MTV模式是Python中独有的)
M Model(数据模型 用于后端数据库模型定义和处理模块)
T Templates(模版 用于前端显示信息)
V View(视图 用于接收客户端请求、处理Model、渲染返回信息给客户端等)
(1) Django的优点和缺点
优点:
一站式开发解决方案 拧包入住各种组件集成高度成熟 配置齐全用户模型、权限认证体系健全ORM数据库管理功能简单方便自带后台管理功能缺点:
配置相对复杂简单应用采用Django有一种杀鸡用牛刀的感觉(2) Django安装和初始化
Django下载方式有两种:
通过pip直接安装
pipinstallDjango==3.0.3通过源码下载并安装
gitclonehttps://github.com/django/django.git安装之后通过startproject参数创建一个新的django项目 test_django/
django-admin.pystartprojecttest_djangocd test_django进入项目路径输入启动服务命令即可启动一个最简单的django服务。
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:开发REST API的工具;Flask-Bootstrap:集成前端Twitter Bootstrap框架;Flask-Moment:本地化日期和时间;Flask的两个主要核心应用是Werkzeug和模板引擎Jinja 除此以外 别的都是可以自由组装的 适合有洁癖的程序员。
(2) Flask优缺点
优点:
项目结构和配置简单组件可以自由拆装小项目或临时性项目比较适用缺点:
组件高度自定义带来的就是各种组件之间的兼容性问题严重大型应用不适合 例如蓝图(blueprint)机制跟Django的url配置比起来其实差得很远(2) Flask安装
我们通过pip直接安装
pipinstallflask在任意位置新建一个py文件 hello.py 。
fromflaskimportFlaskFlaskapp=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__':#创建应用对象app=tornado.web.Application([(r'/',IndexHandler)])#绑定监听端口app.listen(8888)#启动web程序tornado.ioloop.IOLoop.current().start()最后执行 python hello.py启动tornado服务 通过http://127.0.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的支持总结今天给大家介绍了各种Python的Web开发框架 我个人常用的框架主要包括Django、Flask、Tornado。别的框架涉猎较少 也是因为流行度和易用性的关系。
针对于最常用的三种框架 我给大家一个使用建议:
正式项目、大型项目 确定需要长期开发和维护的项目建议选择Django 一劳永逸 不用考虑太多。
小型项目、临时性的项目 不怕折腾的 可以选择Flask。
小型项目、临时性项目或者一些简单的接口服务 可以选择Tornado 因为Tornado天生支持异步 所以很多需要做异步IO服务的也可以选择Tornado 另外Django3.0之后也开始全面支持异步了 建议大家观望。
原文 http://developer.51cto.com/art/202002/611003.htm来源:爱蒂网