此文部分参照《Python高效开发实战》--刘长龙
Python网络框架
网络框架指一组python包,它能够让开发者更加专注于网站应用业务逻辑的开发,而无须处理网络应用层的协议、线程、进程等方面,从而提高开发者的工作效率以及网络应用程序的质量。
目前Python语言的十几个开发框架中,几乎所有的全栈网络框架都强制或引导开发者使用MVC架构开发Web应用.
Python的四种主流框架为:Django/Flask/Tornado/Twisted
此篇博文围绕Django/Flask讲解各自特点以及主要应用.
MVC:
- MVC--M(Model):封装与应用程序相关的业务逻辑的数据及对数据的处理方法,是处理数据逻辑的部分.Model提供功能性接口,通过接口访问数据;
- MVC--V(View):负责数据的显示和呈现,View是对用户的直接输出;
- MVC--C(Controller):从用户端收集用户的输入,可以看作View的反向功能,Controller将用户作出的改变返回给Model,由Model在返回给View,Model作为数据中心,从而提高数据的一致性;
ORM(Object-Relational Mapping 对象关系映射):是在关系型数据库和业务实体对象之间的映射,即开发者对对象与属性进行操作,而不用再去写复杂的sql语句,ORM必须具备三方面功能:
- 映射技术:
- 数据类型映射
- 类映射
- 关系映射
- CRUD操作:(ORM将这些调用转换为SQL语句,通过引擎发送给数据库执行,将结果记录并转换为对象)
- create增加
- Retrieve读取
- Upadate更新
- Delete删除
- 缓存优化:由于数据库的操作通常比较耗时,所以大多数ORM提供数据缓存优化的功能
Django
Django发布于2003年,是当前最成熟完整最广泛以及最富盛名的Python网络框架.Django定义了服务发布;路由映射;模板编程;数据处理的一整套功能.遵循MVC架构.
优点:
- 各模块之间结合紧密;
- 功能强大而相对封闭;
- 完整的在线文档及健全的开发社区;
- 具备自带优秀的ORM;
- 强大的URL映射技术;
- 后台管理系统自动生成;
- 用户多,第三方库丰富;
- 成熟稳定完善,适合企业级网站开发
缺点:
- 由于自带的丰富功能造成的冗余/耦合程度较高;
- 可能相对较重,比如开发小应用时,可能会不够灵活/自由;
Flask
Flask发布于2010年,它吸收了其他框架的优点并且把自己的主要领域定义在微小项目上.作为微框架,安装时不会自动安装ORM数据组件等其他组件,所以开发者需要自行安装需要的组件.
优点:
- 内置开发服务器和调试器:Flask默认处于调试状态,运行时会将错误返回给控制台以及HTTP客户端;
- 与Python单元测试功能无缝连接:测试程序可以模拟进行HTTP访问的客户端来调用Flask路由处理函数,并且获取函数的输出来进行自定义的验证;
- 使用Jinja2模板,强大程度略高于Django的自带模板;
- 完全兼容WSGI 1.0 标准;
- 给予Unicode编码;
- 完美适合小型网站;
- 第三方库同样丰富;
- 开发灵活程度高,入门简单;
缺点:
- 很多东西需要从头构建;
- 用的第三方插件可能要踩的坑较多;