在我的Django应用程序中,我有一个项目列表,每个项目旁边都有一个“删除”选项。我希望用户能够单击“删除”按钮,让它向Django视图发送$ .post,它将删除该实例。成功删除此实例后,我将在javascript中触发另一个Ajax请求,以重绘列表而不删除已删除的实例。
我的问题:如果我实际上没有将值返回到$ .post,那么我应该使用ajax来执行此操作吗? Ajax专门用于检索信息吗?即使我实际上没有返回任何东西,还是需要返回HttpResponse的Django视图吗?
处理“删除”请求和查看等内容的正确方法是什么?
感谢。
答案 0 :(得分:2)
Django视图总是必须返回一个HttpResponse对象,或其中一个subclasses。只是尝试返回其他东西,看看Django如何反应(它应该导致500错误)。
您可以在jQuery中使用$ .post方法来处理您描述的情况。如果你这样做,你肯定应该返回一个字符串来表示删除成功或错误。如果您没有考虑到错误,最终可能会从用户正在查看的页面中删除某些内容,而不会实际删除服务器上的项目,这可能会导致用户不一致和混淆。
然后,您的UI应该具有正在删除的对象的特定状态 - 即,用户已按下删除但服务器尚未回答*。然后,如果出现错误(您收到指示成功函数中的错误的字符串,或者调用错误函数,请参阅jQuery docs about $.post)您可以向用户报告并将项目返回到正常状态。如果删除成功,您可以继续从页面中删除该项目(或删除它时要执行的任何操作)。
*(正在删除的项目的一个很好的指标可能是减少它的不透明度(使其略微透明)并添加一个小轮子或删除的另一个指示器“正在处理中”。)