6

我正试图绕过卡布奇诺。我希望我的 StackOverview 同行审查下面的架构,看看它是否有意义 - 目的是利用 Django 和 Cappuccino 的独特优势,而不会使技术重叠的地方加倍......

当网络浏览器请求一个“友好”的 URL(例如 /、/articles 等)时:

  • DJango 的 urls.py 将其与视图相匹配。
  • 该视图没有执行 DJangos 使用 locals dict 填充模板的典型工作,而是
    直接返回 Cappuccino 应用程序中使用的小型“存根”HTML。
  • 客户端收到卡布奇诺 HTML
  • 客户端请求存根 HTML 中提到的 Objective J JS URL
  • 最终用户应用程序在浏览器中执行并显示

浏览器现在有一个工作应用程序。当用户做某事向服务器请求某事时:

  • 浏览器将 XMLHTTPRequest 发送到 URL。
  • Django 的 URLs.py 将其与视图相匹配。
  • 视图是否有效,可能与数据库模型交互。但是 Django 没有返回模板,而是返回了一些 JSON。
  • 客户端收到 JSON,然后做它需要做的任何事情。

这有意义吗?我们仍然受益于友好的 URL,以及为我们创建的数据库来建模我们的代码。然而,我们没有使用模板,而是提供了 Cappuccino 存根页面和 JSON 响应,以便为用户提供更像真正的应用程序而不是 HTML 模板引擎的东西。

有没有更好的做事方式?其他 Pythonistas 使用什么?感谢您的反馈意见。

4

1 回答 1

4

对于低流量站点,使用 Django 的路由层会很好,但如果您计划获得大量流量,您可能会考虑让您的代理网络服务器处理存根。

至于其余的,它可以工作,并且 TurboGears 社区已经这样做了多年(我是 TG 提交者,所以这是我通常使用的)。将字典返回到模板的 TG 架构使这变得微不足道,因为您只需将“json”设置为模板引擎。

在 Django 中做同样的事情并不复杂。只需使用序列化工具将结果写入响应,而不是使用模板调用。

请注意,当您执行这样的架构时,如果您将所有应用程序逻辑保存在一个地方,则管理起来会容易得多。将一些应用程序逻辑放在 Django 中,一些放在浏览器中会导致事情很快变得混乱。如果您将您的服务器视为一个愚蠢的持久层(验证/身份验证/授权除外),生活会更轻松。

FWIW,如果您对较重的非渐进式增强框架感兴趣,我发现 Sproutcore 比 Cappuccino 更容易使用。

于 2009-10-25T19:06:33.683 回答