Python框架浅谈
时至今日,发展到尽头的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框架浅谈相关推荐
- Python实例浅谈之三Python与C/C++相互调用
参考:http://blog.csdn.net/taiyang1987912/article/details/44779719 Python实例浅谈之三Python与C/C++相互调用 二.Pytho ...
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- python文本框与数据库的关联_Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理...
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3. ...
- Python实例浅谈--Python与C/C++相互调用
转载链接:Python实例浅谈之三Python与C/C++相互调用_乌托邦2号的博客-CSDN博客_python 调用c++类 目录 一.问题 二.Python调用C/C++ 1.Python调用C动 ...
- python axes_浅谈matplotlib.pyplot与axes的关系
最近在学习数据可视化,梳理一下其中一些诸如pandas绘图.matplotlib绘图.pyplot(plt).axes等概念. 重要的事情说三遍:axes不是axis!axes不是axis!axes不 ...
- python bokeh_浅谈python可视化包Bokeh
本文研究的主要是python可视化包Bokeh的相关内容,具体如下. 问题:需要把pandas的数据绘图并通过网页显示,matplotlib需要先保存图像,不合适. 解决:在网上搜了一下,找到一篇介绍 ...
- php tp框架,浅谈PHP之ThinkPHP框架使用详解
Thinkphp框架其精髓就在于实现了MVC思想,其中M为模板.V为视图.C为控制器,模板一般是公共使用类,在涉及数据库时,一般会跟数据表同名,视图会和控制器类里的方法进行名字的一一对应. 下载及配置 ...
- Django用来作为爬虫框架浅谈
首先该框架采用了分布式路由管理机制,其次自带数据库管理后台十分强大 那么分布式路由管理机制 可以实现高并发的爬虫 同时也可以远程监控爬虫的运行情况 只要你的电脑上有浏览器 还可以查看数据库且摆脱l传统 ...
- 【Python】浅谈 multiprocessing
一前言 使用python进行并发处理多台机器/多个实例的时候,我们可以使用threading ,但是由于著名的GIL存在,实际上threading 并未提供真正有效的并发处理,要充分利用到多核 ...
最新文章
- python基础-变量运算符(3)
- python *args 元组 **kargs 字典
- Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
- rhcs做HA时的资源释放脚本实现
- rsyslog服务日志报错分析1
- request获取数据的几种方法
- iOS上获取iTunes音乐权限
- python中main的作用_浅析python 中__name__ = '__main__' 的作用
- apollo java客户端_携程配置中心Apollo的Java客户端API的使用
- uboot——之初体验
- Mysql数据库设计规范之四数据库操作行为规范
- 小书匠编辑器使用手册
- 整数区间内整数的因子的个数
- ug建模文本怎么竖着_UG软件见解分析一二,设计必备软件,UG新手福音
- 优质前端掘金小册推荐及优惠购买链接
- R语言【探究时间序列的自相关性】
- 武汉大学惯性导航课程精要
- ObjC开发-常用第三方开源框架介绍
- 手游App渠道推广统计
- Reinforcement Learning from Simultaneous Human and MDP Reward个人理解
热门文章
- 天锋w2019_三星W2019亲兄弟来袭!天锋W2019雷同的外观,更高端的性能
- 程序员:上班第一天就让改bug!网友:攒一堆了,就等你了!
- python读取键盘事件_使用 Python 记录键盘事件!真的很神奇~
- 企业为什么要做数字化转型,应该如何进行转型?
- aardio - 用paint库模拟表盘
- CSS3 animation 实现地球转动
- 百度地图---通过ip定位获取当前城市
- 应用程序无法正常启动(0xc000007b)。请单击“确定“关闭应用程序。
- Glass Hearts_ Brett
- IE 打开服务器下的MHT文件的实现方法有几种