常见Python的Web开发框架
在今天,Python⾥有很多开发框架⽤来帮助你轻松创建web应⽤。web开发框架存在的意义就在于可以快速便捷的构建应⽤,⽽不⽤去在意那些没必要的技术细节(协议、报⽂、数据结构)。
到2020年为⽌,基于Python创建的的web应⽤已经⾮常多了,国外知名的有youtube、instagram、reditt、国内有知乎、⾖瓣等等。这些⽹站分别⽤到了不同的web框架来实现的,我们今天会⼀⼀讲到。
1. Django
Django应该是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直接安装
pip install Django==3.0.3
通过源码下载并安装
git clone github/django/django.git
安装之后通过startproject参数创建⼀个新的django项⽬ test_django/
django-admin.py startproject test_django
cd test_django进⼊项⽬路径输⼊启动服务命令即可启动⼀个最简单的django服务。
python manage.py runserver
启动成功,现在可以编写你的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直接安装
pip install flask
在任意位置新建⼀个py⽂件,hello.py 。
from flask import FlaskFlaskapp = Flask(__name__)@ute("/")def hello():    return "Hello World!"if __name__ == "__main__":    app.run()
输⼊启动命令:
python hello.py* Running on 127.0.0.1:5000/ (Press CTRL+C to quit)
3. Tornado
严格意义上来说Tornado不是⼀个Web框架,⽽是⼀个基于Python实现的异步处理框架,只是⾃带了WS
GI处理相关的功能。
tornado和Flask⼀样,除了基本的Web处理功能和模版之外,其他功能组件都需要⾃⾏拼装。
(1) tornado的优缺点
优点:
短⼩精悍,性能⽐较好,不依赖Python多进程/多线程
⽀持异步⾮阻塞IO处理⽅式
⽀持websocket
缺点:
过于精简,只适⽤于纯接⼝化服务或者⼩型⽹站应⽤
(2) Tornado安装
同样使⽤pip进⾏安装。
pip install tornado
新建⼀个hello.py 代码⽂件。
import tornado.webimport tornado.ioloopclass IndexHandler(tornado.web.RequestHandler):    def get(self):        self.write('hello world')if __name__ == '__main__':    # 创建应⽤对象    app = tornado.web.Application([(r'/',IndexHandler)])    # 绑定监听以上三种是Python开发中经常使⽤到的Web框架,还有⼀些不是那么常⽤的也⼀并给⼤家简单介绍⼀下。
4. TurboGears
据说⾖瓣早期就是基于该框架进⾏开发的。
TurboGears是在⼏个著名的Python项⽬上组装搭建起来的⼀个框架,由SQLAlchemy,WebOb,Repoze,Genshi组成。
在某种意义上,TurboGears是将多个开源组件粘合在⼀起。和Django同样采⽤MVC架构。
TurboGears的优点:
⽀持聚合
强⼤的对象关系映射器
事务系统⽀持多数据库间事务
多数据库⽀持
以可重⽤的代码⽚段为模板
具有很多的灵活性,可以对接⾮标准组件
⽀持分⽚
模板系统使设计师的设计更轻松
5. Bottle
Bottle和Flask⼀样,也是⼀个轻量级的Web开发框架。
它不依赖于Python标准库外的任何库。于2009年被创造出来,它仅由包含模板、路由和⼀个WSGI抽象层的最⼩⼯具开始。对于程序员想寻⼀个最轻量级的WSGI服务是⼀个
很好的选择,⽤它可以最快速度的创建⼀个Web服务。
Bootle优点:
超轻量级django网站
内建模板引擎和对Jinja2,Mako和Cheetah的⽀持
总结
今天给⼤家介绍了各种Python的Web开发框架,我个⼈常⽤的框架主要包括Django、Flask、Tornado。别的框架涉猎较少,也是因为流⾏度和易⽤性的关系。
针对于最常⽤的三种框架,我给⼤家⼀个使⽤建议:
正式项⽬、⼤型项⽬,确定需要长期开发和维护的项⽬建议选择Django,⼀劳永逸,不⽤考虑太多。
⼩型项⽬、临时性的项⽬,不怕折腾的,可以选择Flask。
⼩型项⽬、临时性项⽬或者⼀些简单的接⼝服务,可以选择Tornado,因为Tornado天⽣⽀持异步,所以很多需要做异步IO服务的也可以选择Tornado,另外Django3.0之后也开
始全⾯⽀持异步了,建议⼤家观望。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。