python几个轻量级web框架
python几个轻量级web框架
我最近发表了一篇名为 ‘7 Minimal Node.js Web Frameworks for 2014 and Beyond‘ 的博文——目前它是我博客访问量最高的文章:超过10000人浏览,分享和评论了这些我总结到一起的web框架。
这教会了我一些事,这类文章是有需求的——因为它提供了触手可及的备查和/或探索了做事情的新方式。我发现很多“周刊”在他们的新闻或是博客上刊登了我的文章,对此我感到很高兴。这促使我尝试把更多其他语言中的此类内容总结到一起,比如Python、Ruby、PHP和JavaScript。
众口难调,我尽量把我搜索的时候出现在靠前位置的那些框架都囊括进来了, 我试着以社区规模大小以及它们在GitHub上的活跃度来为它们排名。我建议您在留言中列出您个人最喜爱的框架(或是您正在使用的框架)的链接,我会尽快把它加入到列表中。
Python 是一个可以让你更快地完成工作,更高效地整合系统的语言。你可以学习使用Python并且马上获得生产力的提升,降低维护成本。
Python版的Hello World程序
你可能忘记该怎么做了,下面是一个提示。
|
1
|
print "Hello World!";
|
我还特别喜欢这一段代码,
|
1
2
3
|
while True:
for i in ["/","*","|","\\","|"]:
print "%s\r" % i,
|
Python的Web框架
当一些基础工作不需要你操心的时候,工作起来会比较容易,这也是为什么框架在各个语言的开发者社区中变得如此流行的原因,你无法否认的是,拼装一个网页或是一个项目,比起不得不创建你自己的类或方法要容易的多。
我秉承自己的承诺,在本文或是将来任何的榜单中,不偏向任何一个框架,所有的选择都基于我个人意见和喜好。如果你可以和朋友们分享本文,在你自己的博客上面宣传一下我会很感激你的。同时我也很感激那些让这些Python web框架成为可能所付出的辛勤劳动。
bobo

Bobo是一个轻量级的框架,用来创建WSGI web应用。它的目标是简单易用,容易记忆。
它强调两个方面的内容:
1)把URL映射到对象; 2)调用对象来生成HTTP响应。
Bobo 并不具备模板语言,数据库集成层或是其他一些WSGI中间件或特定应用程序库所提供的功能。Bobo建立在其他框架之上,尤其是WSGI和WebOb。
Bottle

Bottle是一个快速、简单、轻量级的WSGI微型Python web框架。它仅包含单一文件模块,并且不依赖除了Python标准库以外的其他库。
它支持类似Google App Engine、Python Paste这样的应用,还包含了对一些模板的支持,比如Cheetah和Mako。

CherryPy 允许开发者以他们构建其他面向对象Python程序近乎同样的方式来开发web应用。这使得可以在更短的时间内开发出更精简的源代码。CherryPy允许你进行很多常规的Python编程,但是它并没有整合一个模板系统,你需要自己去找一个。(它支持大多数的模板)
CherrPy 能够很好适应默认的Python功能和结构,它在使用更少的代码创建web应用

Cyclone 是一个Python的web服务框架,它基于Twisted protocol实现了Tornado API 。我将把对这个框架的介绍,交给7co.的Gleicon,请看他的文章。
Flask

Flask是一个基于Werkzeug 和 Jinja2的微型Python框架。它的目的是更快地上手,基于很多很好的想法开发出来的。你可以在Wikipedia上了解更多内容。
Itty-Bitty

itty.py是一个小实验,是受Sinatra的影响而尝试实现的一个微型框架,它刚好够用,没有额外的东西了。
当前支持:
- 路由
- 内容类型
- 基本响应
- HTTP状态码
- URL参数
- 支持基本的GET/POST/PUT/DELETE
- 用户可定义的错误处理器
- 重定向
- 文件上传
- 报头
- 静态媒体储存
当心!如果你是要找一个久经考验的,企业级框架,你就来错地方了。但是它确实很有趣。

Klein是一个使用Python来开发可用于生产环境web服务的微型框架。它基于使用非常广泛且经过良好测试的组件,比如Werkzeug和Twisted,以及近乎完全的测试覆盖率。你可以阅读这篇文章来查看介绍。(也许有点过时了)

Morepath是具有强大的能力的Python 微型web框架。Morepath是一个Python WSGI微型框架。他使用路由,但是是针对模型的路由。Morepath是一个模型驱动,灵活的框架,这使得它富有表达力。这里有篇文章,关于Morepath的一些细节和建议。

ObjectWeb 是一个快速,极简的纯Python web框架,不依赖任何的第三方库。它围绕Python进行设计,因为起初想要把它当做面向对象的编程语言来使用。ObjectWeb支持CGI和WSGI标准,而且有一个内建的开发服务器。我觉得它是由这个家伙设计的

创造Pecan是为了填补Python web框架世界的一个空缺——一个提供object-dispatch方式路由的超轻量级的框架。Pecan的目标并不是要成为一个“全栈”框架,因此没有支持一些额外的功能,比如session或是数据库 。相反,Pecan专注于HTTP本身。

Pyramid是一款非常通用的开源web框架。作为一个框架,它的首要任务是让开发者创建web应用变得简单。web应用的类型并不重要,可以是一个电子表单、一个企业内部网或者是一个社交平台。Pyramid非常通用,可以在各种各样的情况下使用它。
通过阅读/观看SixFeetUp上Caliy的这个教程.,你可以学到更多关于Pyramid的东西。

Tornado是一个Python web框架,而且是一个异步网络库,最初是为 FriendFeed开发的。通过使用非阻塞I/O,Tornado可以处理数以万计打开的链接,这使它成为长轮询、WebSocket和其他需要为用户提供长连接的应用的理想选择。
Thomas Allen写了一个简单的教程,关于Tornado是如何工作的以及如何创建一个简单的静态页面。

web.py是一个Python 的web框架,既简单,有强大。web.py处于公有域内,你可以处于任何目的去使用它,没有限制。你可以看Lucas’s Kauffman博客上的指导文章以及关于它和Django的比较(好吧,我认为我们不能管这叫做比较)。

一个轻量级、高性能、高并发的WSGI web框架,具备创建现代,高效网络应用的关键功能。这里有一篇来自Andriy Kornatskyy,关于Wheezy的介绍
Python的最小Web框架
我想,有件事还是值得一提,这些框架实际上都是极小的。因此,像web2py和Django这些框架都不会出现在这个列表中。我欢迎大家反馈,审查各个框架,我同时想知道大家对一份全尺寸web框架的列表是否有兴趣?(这将会包括Django)
我把这些框架放在一起,而且我无意间发现了一些很好的文章——其中一个是一些Python web框架的基准测试,这些框架大多数都在本文中列出了。这个基准测试是由Faruk Akgul所完成的,可以点击这个链接查看
Python的官方页面同样也有专门关于web框架的章节,也许你也想读一下
下一个是什么?Ruby或者PHP?
photo by francois
python几个轻量级web框架的更多相关文章
- Python面试-websocket及web框架
一.Websocket 1. websocket概念 在讲websocket之前,我们先来看看ajax轮询和long poll的实现机制. A. ajax轮询 ajax轮询的原理非常简单,让浏览器隔 ...
- 「造个轮子」——cicada(轻量级 WEB 框架)
前言 俗话说 「不要重复造轮子」,关于是否有必要不再本次讨论范围. 创建这个项目的主要目的还是提升自己,看看和知名类开源项目的差距以及学习优秀的开源方式. 好了,现在着重来谈谈 cicada 这个项目 ...
- 【2018】Python面试题【web框架】
1.谈谈你对http协议的认识. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使 ...
- Python全栈开发-web框架之django
一:web框架 什么是web框架? Web应用框架(Web application framework)是一种开发框架,用来支持动态网站.网络应用程序及网络服务的开发.这种框架有助于减轻网页开发时共通 ...
- python学习之路web框架
WEB框架的本质 python的WEB框架分为两大类: 1.自己写socket,自己处理请求 2.基于wsgi(Web Server Gateway Interface WEB服务网关接口),自己处理 ...
- python django基础一web框架的本质
web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...
- python学习之路web框架续
中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...
- 轻量级web框架cicada----(转)
源码地址: https://github.com/TogetherOS/cicada 快速启动 下面来看看如何快速启动一个 HTTP 服务. 只需要创建一个 Maven 项目,并引入核心包. < ...
- 轻量级Web框架Flask——Web表单
安装 Flask-WTF及其依赖可使用pip安装 pip install flask_wtf 配置 要求应用配置一个密钥.密钥是一个由随机字符构成的唯一字符串,通过加密或签名以不同的方式提升应用的安全 ...
随机推荐
- QQ 为什么以 UDP 协议为主,以 TCP 协议为辅?
QQ既有UDP也有TCP!不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态.这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000. UDP协议是无 ...
- 工具类_JavaPOI_Office文件内容读取
文件内容读取工具类,亲测可用 maven依赖: <dependency> <groupId>org.apache.poi</groupId> <artifac ...
- sql server management studio 连接时指定非默认端口 ,port
- 用了pm2之后,如何让console.log('..')出现在控制台
使用 pm2 log 0 可以查看.当然这个 0 应该是应用的 id
- ctl +→ = MAC 触控板三指手势
我只想发一个这个:一直用外接显示器,但是不舍得抛弃全屏程序的切换,即:触控板三指手势. 期间各种百度无果,最多找到出最多的是触发角: 今天终于发现了:ctl +→ = MAC 触控板三指手势 (外 ...
- ISO/IEC 9899:2011 条款6.2.6——类型的表示
6.2.6 类型的表示 6.2.6.1 通用类型 1.所有类型的表示都是未指定的,除了在本小节所描述的之外. 2.除了位域(bit-field),对象由连续的一个或多个字节序列构成,这些字节序列的字节 ...
- MySQL中表的复制以及大型数据表的备份教程
MySQL中表的复制以及大型数据表的备份教程 这篇文章主要介绍了MySQL中表的复制以及大型数据表的备份教程,其中大表备份是采用添加触发器增量备份的方法,需要的朋友可以参考下 表复制 mysq ...
- 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_08-用户认证-认证服务查询数据库-用户登录前端
点击登陆注册链接 跳转到登陆的页面 门户的前端代码 当前路径base64编码 登陆的表单,在学习中心的前端. 这就是登陆的表单 这是表单的校验 请求服务端的接口 登陆请求的方法 请求的地址nginx上 ...
- droid AVD创建及设置中各参数详解
设置AVD时有些参数比较模糊,特地找了篇文章,大家参考下! 本文根据如下的模拟器安装做一些解释: Name: 自定义虚拟的名称,不能有空格或者其他非法字符,否则不能创建,即Creat AVD不能高亮点 ...
- asp.net下Response.ContentType类型汇总
在ASP.NET中使用Response.ContentType="类型名";来确定输出格式 'ez' => 'application/andrew-inset', 'hqx' ...