【发布时间】:2014-04-16 16:33:44
【问题描述】:
我将 Django 和prototype.js 用于Ajax 风格的Web 应用程序。我已经有了一些经验,但总的来说还是网络编程方面的新手。
我已经将我的 Web 应用程序设计成这样(我认为这是直截了当的):
HTML 页面由多个 div 元素组成,这些元素代表与用户交互的不同模块。有一些链接指向 Javascript 函数(“onclick”),这些函数又通过 Ajax 请求调用 Django 服务器框架。这会在 Django 框架中执行视图方法,这些方法会执行一些功能性工作(更改数据库中的数据),然后最终更新用户单击链接的页面的相关部分(div)。
到目前为止一切顺利。
现在的问题是我发现自己面临这样一个事实,即不同部分中的不同链接应该执行相同的功能,但应该更新不同的 div 作为调用它们的函数。
示例: 我有一个部分或页面 A,其中列出了用户的所有订单。 旁边应该有一个取消订单的链接。 点击它应该取消订单(功能性的东西),然后更新页面 A 中的订单列表。
还有另一个页面 B,其中我有一个特定字段的订单列表。 同样,应该可以通过单击链接取消。 它应该执行与上面相同的功能,但现在使用按字段列表的订单更新页面 B。
我想知道如何分解常见的功能性东西。
天真的方法是 页面 A 链接 -> onclick(cancelOrderA) -> js:cancelOrderA() -> 对 url/cancelOrderA 的 Ajax 请求 -> Django 视图函数 A -> 渲染新页面 A 页面 B 链接 -> onclick(cancelOrderB) -> js:cancelOrderB() -> 对 url/cancelOrderB 的 Ajax 请求 -> Django 视图函数 B -> 渲染新页面 B
所以我发现自己编写了所有这些函数(javascript 和 Django 视图),尽管它执行相同的功能代码。
当然我可以写一个python函数来封装常用的功能代码。 但我觉得我仍然需要上面所有不同的胶水功能。 我是否需要为每个操作提供专用的 Django-url 和 -view? 每个动作都需要一个专用的 Javascript 函数吗?
我这里有什么误解吗? 遇到这种情况,你们是怎么处理的?
【问题讨论】:
标签: ajax django django-views prototypejs