4

在我的 Django 应用程序中,我有一个项目列表,每个项目旁边都有一个“删除”选项。我希望用户能够单击“删除”按钮,让它发送一个 $.post 到 Django 视图,在那里它将删除该实例。成功删除此实例后,我将在 javascript 中触发另一个 Ajax 请求以重绘列表而不删除已删除的实例。

我的问题:如果我实际上没有向 $.post 返回值,那么我应该使用 ajax 来执行此操作吗?Ajax 是专门用于检索信息的吗?即使我实际上没有返回任何东西,是否需要 Django 视图来返回 HttpResponse ?

处理“删除”请求和视图之类的正确方法是什么?

谢谢。

4

1 回答 1

4

Django 视图总是必须返回一个 HttpResponse 对象,或者它的一个子类。只需尝试返回其他内容,看看 Django 是如何反应的(它应该会导致 500 错误)。

对于您描述的情况,您可以使用 jQuery 中的 $.post 方法。如果你这样做了,你肯定应该返回一个字符串来指示成功删除或错误。如果您不考虑错误,您最终可能会从用户正在查看的页面中删除某些内容,而不会实际删除服务器上的项目,这可能会给您的用户造成不一致和混乱。

然后,您的 UI 应该具有正在删除的对象的特定状态 - 即用户已按下删除但服务器尚未响应*。然后,如果出现错误(您在成功函数中收到一个指示错误的字符串,或者调用了错误函数,请参阅有关 $.post 的 jQuery 文档),您可以将其报告给用户并将项目返回到正常状态状态。如果删除成功,您可以继续从页面中删除该项目(或在它被删除时执行您打算执行的任何操作)。

*(一个项目被删除的一个很好的指标可能是降低它的不透明度(让它有点透明)并添加一个小旋转轮或另一个删除“正在进行”的指标。)

于 2012-05-01T02:20:24.507 回答