webapp和web.py的区别

10 投票
3 回答
6425 浏览
提问于 2025-04-16 10:23

Webpy.org - 谁在使用 web.py?

“[web.py 启发了] 我们在 FriendFeed 使用的网络框架,以及随 App Engine 一起提供的 webapp 框架……”
— Brett Taylor,FriendFeed 的联合创始人和 Google App Engine 的原始技术负责人

Google App Engine Python 入门指南

把 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 个回答

3

这两个东西很相似,只不过 webapp 更加适合 Google App Engine(GAE),而 web.py 则没有那么专门。webapp 非常小巧,而且确实是为了在 App Engine 上写程序而优化的,所以如果你觉得这个合适,那就用它吧。你之前提到不想用 Django 的模板系统(我不知道为什么,因为其实它挺简单的),而 webapp 默认是带有这个模板系统的。虽然模板系统是可以更换的,但我建议你试试 Django 的引擎。

不过,如果你不喜欢 Django 的话,换个框架也不是特别难(只要是符合 WSGI 标准的基本上都能用)。如果你想用 web.py,那就尽管去设置吧,不过你可能需要花点时间去查查怎么配置和设置一切让它正常工作。

4

webapp和web.py的区别

我认为主要的区别有:

  1. webapp框架是专门为Google App Engine(GAE)设计的。而web.py框架并不是专门为GAE设计的。
    • “webapp框架是[在Google App Engine中]构建网页应用的默认工具集,但不是唯一的选择。”(来源:与Google App Engine一起开发,作者Eugene Ciurana)
  2. 它们使用不同的模板语言——web.py使用自己的模板语言,而webapp的模板语言是基于Django的。

其他适用于GAE的Python框架

还有其他适用于GAE的Python框架——这些框架都不使用Django的模板语言,包括:

  1. Flask——“一个基于Werkzeug、Jinja 2和良好意图的Python微框架。”
  2. tipfy——“一个专门为Google App Engine制作的小而强大的框架。它和webapp很像,但提供了webapp缺少的一些功能和好东西:国际化、会话管理、自定义认证、闪存消息等等。所有这些都是以模块化、轻量级的方式设计,适合App Engine。”

在App Engine已经提供webapp的情况下,使用web.py值得吗?

个人来说,我觉得使用webapp以外的东西是值得的。不过,我更倾向于使用Flasktipfy

Alex Martelli在回答Stack Overflow问题Google App Engine - 安全Cookie时推荐了tipfy。我从Alex的回答中得到的主要信息是tipfy的特点:

  1. 专为GAE设计
  2. 轻量级
  3. 包含你常常需要的内置功能
19

web.py 的使用经验:
我三年前开始使用 web.py,那时我决定学习一些 Python 的网页框架
我最喜欢 web.py 的第一点就是它的简单;我在寻找一个基本的微框架,不想要像 DjangoWeb2py 这样的大项目里那些复杂的功能。

于是我开发了几个项目(用 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 是一个不错的项目,可以 学习关注

撰写回答