webapp和web.py的区别
Webpy.org - 谁在使用 web.py?
“[web.py 启发了] 我们在 FriendFeed 使用的网络框架,以及随 App Engine 一起提供的 webapp 框架……”
— Brett Taylor,FriendFeed 的联合创始人和 Google App Engine 的原始技术负责人
把 HTML 嵌入到代码里会显得很乱,也不容易维护。使用模板系统会更好……为了方便你,webapp 模块包含了 Django 的模板引擎。
问题:
webapp 和 webpy 有什么区别?
既然 Appengine 已经提供了 webapp,使用 webpy 还值得吗?
我知道的:
1. web.py 有自己的模板语言(看起来比 Django 的简单)
2. 目前,我考虑使用 web.py 的唯一原因是为了避免在 appengine 上使用(和学习)Django 的模板。
3. 问题开头的引用
4. 我已经看过一些相关的问题,比如 哪个 Python 框架最适合在 Google App Engine 上进行网页开发 和 Django 和其他 Python 网络框架的比较。
5. 我注意到 stackprinter 使用了 web.py,并且托管在 appengine 上。
3 个回答
这两个东西很相似,只不过 webapp 更加适合 Google App Engine(GAE),而 web.py 则没有那么专门。webapp 非常小巧,而且确实是为了在 App Engine 上写程序而优化的,所以如果你觉得这个合适,那就用它吧。你之前提到不想用 Django 的模板系统(我不知道为什么,因为其实它挺简单的),而 webapp 默认是带有这个模板系统的。虽然模板系统是可以更换的,但我建议你试试 Django 的引擎。
不过,如果你不喜欢 Django 的话,换个框架也不是特别难(只要是符合 WSGI 标准的基本上都能用)。如果你想用 web.py,那就尽管去设置吧,不过你可能需要花点时间去查查怎么配置和设置一切让它正常工作。
webapp和web.py的区别
我认为主要的区别有:
- webapp框架是专门为Google App Engine(GAE)设计的。而web.py框架并不是专门为GAE设计的。
- “webapp框架是[在Google App Engine中]构建网页应用的默认工具集,但不是唯一的选择。”(来源:与Google App Engine一起开发,作者Eugene Ciurana)
- 它们使用不同的模板语言——web.py使用自己的模板语言,而webapp的模板语言是基于Django的。
其他适用于GAE的Python框架
还有其他适用于GAE的Python框架——这些框架都不使用Django的模板语言,包括:
- Flask——“一个基于Werkzeug、Jinja 2和良好意图的Python微框架。”
- tipfy——“一个专门为Google App Engine制作的小而强大的框架。它和webapp很像,但提供了webapp缺少的一些功能和好东西:国际化、会话管理、自定义认证、闪存消息等等。所有这些都是以模块化、轻量级的方式设计,适合App Engine。”
在App Engine已经提供webapp的情况下,使用web.py值得吗?
个人来说,我觉得使用webapp以外的东西是值得的。不过,我更倾向于使用Flask或tipfy。
Alex Martelli在回答Stack Overflow问题Google App Engine - 安全Cookie时推荐了tipfy。我从Alex的回答中得到的主要信息是tipfy的特点:
- 专为GAE设计
- 轻量级
- 包含你常常需要的内置功能
web.py 的使用经验:
我三年前开始使用 web.py,那时我决定学习一些 Python 的网页框架。
我最喜欢 web.py 的第一点就是它的简单;我在寻找一个基本的微框架,不想要像 Django 或 Web2py 这样的大项目里那些复杂的功能。
于是我开发了几个项目(用 fastcgi 部署),并学习了 web.py 的所有 库功能,包括 Templetor。
后来我发现了 Google App Engine,并开始使用 Webapp;这个过程有点无聊,因为它不让你用 Python(像 Templetor 或 Mako),而是强迫你学习一种新的模板语法,这种语法默认是非常限制的。
在开发 StackPrinter 的时候,我发现 web.py 支持 Google App Engine,于是我去掉了 Sqlite,做了一些小调整,开始使用 GAE 的数据存储。
web.py 是我在 Python 网页框架中的初恋,可以说我对它有点偏爱。
我在 GAE 的小项目中继续使用 web.py,因为我对它很熟悉,而且 templetor 的速度非常快。
我喜欢可以用 Python 来做模板,以及轻松地将一些数据或函数共享给所有视图的方式,我也喜欢 工具集,比如编码、markdown 等等。
Webapp 和 web.py 的比较:
我觉得比较它们不太公平,因为 Webapp 是一个简单的框架,只提供了最基本的工具来入门;很多功能都缺失,比如国际化(I18n)、验证、处理器,甚至基本的 cookie 处理。
可以看看 Webapp-improved,它更好一些。
我的建议:
如果你主要是为 Google App Engine 开发,我建议你使用一些专门为 GAE 制作的框架,比如 Tipfy。
如果你在寻找一个适合自己项目的 Python 网页框架,web.py 是一个不错的项目,可以 学习 和 关注。