时至今日,发展到尽头的Python的Web Framework 可谓是百花齐放,各种micro-framework、framework数不胜数。

python这么多的框架,能全都玩一边,熟知的人不多,下面我就我知道的一些相关知识,做一个简单的总结和浅谈。

       一、Django

Django可以说是Python框架中势力最大的一个,他的文档完善、市场占有率最高、招聘的职位也是最多。他的有别于其他框架的地方有:

1、全套的解决方案:Django像Rails一样,提供全套的解决方案(full-stack framework+batteries included),基本要什么有什么(cache,session、feed、orm、geo、auth),这些全部都是django自己造,开发网站必备的工具Django基本都有,因此开发效率高,除了各种问题也有地可寻。

2、强大的URL路由配置,Django让你可以设计出非常优雅的URL,在Django里你基本客户跟丑陋的GET sey bye bye。

3、自助管理后台,admin interface 是Django里比较吸引眼球的一项contrib(捐助、捐献),几乎不用写代码就拥有一个完整的后台管理界面。

但没有十全十美的框架,Django坚持自己造的所有的轮子,整个系统相对封闭。而且:

1、系统紧耦合,如果在使用过程中,觉得自带的内置功能不好用,想用第三方库来扩展是很困难的。比如要用SQLAlchemy或者Mako替换掉ORM、Template几乎是不可能的。Django自带的ORM远不如SQLAlchemy强大,SQLAlchemy是Python世界中的ORM标准,其他框架都支持SQLAlchemy了,唯独Django仍然坚持;Template 功能比较弱,不能插入Python代码,如要写复杂一点的逻辑需要另外用Python实现Tag或者Filter。

2、URL配置虽然强大,但要全部手写,这点跟Rails的Convention over configuration 的理念完全相左,高手和初识Django的人配出来的URL会有很大差异。

3、Python 文件做配置文件,而不是更常见的ini、xml、yaml等形式,这本身不是什么问题,可是因为理论上来说settings的值是动态的改变的,所以不是最佳体现。

4、总的来说,Django大包大揽,用来快速开发以希望Web项目是不错的,但如果你用习惯了Django,你会越用月习惯。但如果不能接收Django的设计哲学,用起来只是徒增痛苦。

       二、Pylons

     Python框架的另一巨头就是Pylons了(TurboGears2.x是基于Pylons做的,而repoze.bfg也并入了Pylons project 里面)。

Pylons的设计理念和Django完全不同,Pylons本身只有两千行左右的Python的代码,不过他附带一些几乎就是pylons御用的第三方模块。Pylons只是提供一个架子和可选方案,用户可以根据自己的喜好选择Template、ORM、form、auth等组件,系统高度可定制。可以说pylons就是用胶水语言(glue language)设计的胶水框架了。

如果觉得pylons很完美了,如果选择了pylons,那么噩梦也就随之而至了。

噩梦一:学习

Pylons依赖于许多第三方库,他们并不是Pylons所造,学习Pylons的同时还要学习这些库的使用。所以说Pylons 的学习曲线要比Django高的多,而且Pylons的官方文档也一直是人们批评的对象(好在出了The Definitive Guide toPylons )。

Pylons一度被誉为只适合高手使用的Python框架。

噩梦二:调试

不出错误万事大吉,一旦出了错误,因为涉及到了第三方模块太多,所以很难定位到是哪里出了问题,只有用的很熟才能解决此类问题。

噩梦三:升级

安装Pylons需要安装近20几个模块,各有各的版本号。要升级Pylons的版本,哪个模块出了不兼容的问题都有可能,导致升级很难。

Pylons和repoze.bfg 的融合可能会催生下一个能挑战Django地位的框架。

       三、Tornado

     Tornado 即是一个 Web server ,同时又是一个类Web,py 的micro-framework,作为框架Tornado的思想来源于Web.py

。Web.py 的设计临力求精简keep it simple and poweful,总共没有多少代码,也想Pylons那样依赖大量的第三方模块,而是提供一个框架所必须的一些东西,如:URL路由、Template、数据库访问。

一个框架精简的好处是你可以聚焦在业务逻辑上,而不是用太多精力放在框架本身,但缺点也很明显,许多事情还要亲自操刀。

四、Flask & Bottle

     作为新生代Python框架的代表,两个框架都采用了decoretor的方式配置URL路由。

两者和web.py一样,都非常精简,另外Flask和Pylons一样,可以和jinja2、SQLAlchemy之类很好的结合。

Quixote 豆瓣使用开发框架

Python框架浅谈相关推荐

  1. Python实例浅谈之三Python与C/C++相互调用

    参考:http://blog.csdn.net/taiyang1987912/article/details/44779719 Python实例浅谈之三Python与C/C++相互调用 二.Pytho ...

  2. Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客  QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...

  3. python文本框与数据库的关联_Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理...

    基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3. ...

  4. Python实例浅谈--Python与C/C++相互调用

    转载链接:Python实例浅谈之三Python与C/C++相互调用_乌托邦2号的博客-CSDN博客_python 调用c++类 目录 一.问题 二.Python调用C/C++ 1.Python调用C动 ...

  5. python axes_浅谈matplotlib.pyplot与axes的关系

    最近在学习数据可视化,梳理一下其中一些诸如pandas绘图.matplotlib绘图.pyplot(plt).axes等概念. 重要的事情说三遍:axes不是axis!axes不是axis!axes不 ...

  6. python bokeh_浅谈python可视化包Bokeh

    本文研究的主要是python可视化包Bokeh的相关内容,具体如下. 问题:需要把pandas的数据绘图并通过网页显示,matplotlib需要先保存图像,不合适. 解决:在网上搜了一下,找到一篇介绍 ...

  7. php tp框架,浅谈PHP之ThinkPHP框架使用详解

    Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板.V为视图.C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应. 下载及配置 ...

  8. Django用来作为爬虫框架浅谈

    首先该框架采用了分布式路由管理机制,其次自带数据库管理后台十分强大 那么分布式路由管理机制 可以实现高并发的爬虫 同时也可以远程监控爬虫的运行情况 只要你的电脑上有浏览器 还可以查看数据库且摆脱l传统 ...

  9. 【Python】浅谈 multiprocessing

    一前言     使用python进行并发处理多台机器/多个实例的时候,我们可以使用threading ,但是由于著名的GIL存在,实际上threading 并未提供真正有效的并发处理,要充分利用到多核 ...

最新文章

  1. python基础-变量运算符(3)
  2. python *args 元组 **kargs 字典
  3. Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
  4. rhcs做HA时的资源释放脚本实现
  5. rsyslog服务日志报错分析1
  6. request获取数据的几种方法
  7. iOS上获取iTunes音乐权限
  8. python中main的作用_浅析python 中__name__ = '__main__' 的作用
  9. apollo java客户端_携程配置中心Apollo的Java客户端API的使用
  10. uboot——之初体验
  11. Mysql数据库设计规范之四数据库操作行为规范
  12. 小书匠编辑器使用手册
  13. 整数区间内整数的因子的个数
  14. ug建模文本怎么竖着_UG软件见解分析一二,设计必备软件,UG新手福音
  15. 优质前端掘金小册推荐及优惠购买链接
  16. R语言【探究时间序列的自相关性】
  17. 武汉大学惯性导航课程精要
  18. ObjC开发-常用第三方开源框架介绍
  19. 手游App渠道推广统计
  20. Reinforcement Learning from Simultaneous Human and MDP Reward个人理解

热门文章

  1. 天锋w2019_三星W2019亲兄弟来袭!天锋W2019雷同的外观,更高端的性能
  2. 程序员:上班第一天就让改bug!网友:攒一堆了,就等你了!
  3. python读取键盘事件_使用 Python 记录键盘事件!真的很神奇~
  4. 企业为什么要做数字化转型,应该如何进行转型?
  5. aardio - 用paint库模拟表盘
  6. CSS3 animation 实现地球转动
  7. 百度地图---通过ip定位获取当前城市
  8. 应用程序无法正常启动(0xc000007b)。请单击“确定“关闭应用程序。
  9. Glass Hearts_ Brett
  10. IE 打开服务器下的MHT文件的实现方法有几种