Cappuccino、Django、AJAX 并将它们组合在一起 - 回顾我的架构!
Posted
技术标签:
【中文标题】Cappuccino、Django、AJAX 并将它们组合在一起 - 回顾我的架构!【英文标题】:Cappuccino, Django, AJAX, and fitting it all together - review my architecture! 【发布时间】:2010-12-09 22:44:04 【问题描述】:我正试图了解卡布奇诺。我希望我的 StackOverview 同行审查下面的架构,看看它是否有意义 - 目的是利用 Django 和 Cappuccino 的独特优势,而不会使技术重叠的地方加倍......
当网络浏览器请求一个“友好”的 URL(例如 /、/articles 等)时:
DJango 的 urls.py 将其与 看法。 视图,而不是做 DJangos 填表的典型作品 带有本地字典的模板, 返回中使用的小“存根”html 直接一个卡布奇诺应用程序。 客户端收到卡布奇诺 HTML 客户端请求Objective J JS 存根 HTML 中提到的 URL 最终用户应用程序被执行并且 显示在浏览器中浏览器现在有一个工作的应用程序。当用户做某事时 向服务器请求一些东西:
浏览器向 URL 发送 XMLHTTPRequest。 Django 的 URLs.py 将其与 看法。 视图可以正常工作,可能与 DB 模型交互。但 Django 没有返回模板,而是返回了一些 JSON。 客户端收到 JSON,并且 做它需要做的任何事情。这有意义吗?我们仍然有友好的 URL 的好处,以及为我们的代码建模而创建的数据库。然而,我们没有使用模板,而是提供了 Cappuccino 存根页面和 JSON 响应,以便为用户提供更像真正的应用程序而不是 HTML 模板引擎的东西。
是否有更好的做事方式?其他 Pythonistas 使用什么?感谢您的反馈。
【问题讨论】:
【参考方案1】:对于低流量站点,使用 Django 的路由层会很好,但如果您计划获得大量流量,您可能会考虑让您的代理网络服务器处理存根。
至于其余部分,它可以工作,并且 TurboGears 社区多年来一直在这样做(我是 TG 提交者,所以我通常使用它)。将字典返回到模板的 TG 架构使这变得微不足道,因为您只需将 'json' 设置为模板引擎。
在 Django 中做同样的事情并不复杂。只需使用serialization 工具将结果写入响应,而不是使用模板调用。
请注意,当您执行这样的架构时,如果您将所有应用程序逻辑保存在一个地方,则管理起来会容易得多。将一些应用程序逻辑放在 Django 中,一些放在浏览器中会导致事情很快变得混乱。如果您将服务器视为哑持久层(验证/身份验证/授权除外),生活会更轻松。
FWIW,如果您对较重的非渐进式增强框架感兴趣,我发现 Sproutcore 比 Cappuccino 更容易使用。
【讨论】:
以上是关于Cappuccino、Django、AJAX 并将它们组合在一起 - 回顾我的架构!的主要内容,如果未能解决你的问题,请参考以下文章
使用 django-allauth 实现 Ajax 请求/响应
使用Ajax验证并提交Django表单(django-crispy-forms)