【发布时间】:2010-06-15 15:11:10
【问题描述】:
我目前有一个网页,用户在其中输入一些数据,然后单击提交按钮。我在 views.py 中处理数据,然后使用相同的 Django 模板返回并显示原始数据和结果。我想做的是尝试给它更多现代的外观和感觉。您知道那种事情,页面不会刷新,而是显示一个旋转的磁盘,直到显示结果。我认为这意味着使用 Ajax?修改这样一个简单的应用程序以使用 Ajax 有多难?涉及什么?什么是最好的工具? jQuery?
【问题讨论】:
我目前有一个网页,用户在其中输入一些数据,然后单击提交按钮。我在 views.py 中处理数据,然后使用相同的 Django 模板返回并显示原始数据和结果。我想做的是尝试给它更多现代的外观和感觉。您知道那种事情,页面不会刷新,而是显示一个旋转的磁盘,直到显示结果。我认为这意味着使用 Ajax?修改这样一个简单的应用程序以使用 Ajax 有多难?涉及什么?什么是最好的工具? jQuery?
【问题讨论】:
我倾向于在非常精细的层面上编写我的视图,而不是让一个视图呈现整个页面。这使我可以使用所有这些组件并以不同的方式重用它们。
例如,如果我有一个带有表单的视图和表单下方的结果列表,我会为表单和列表编写一个极简视图,然后我会为“页面”编写一个简单的视图将它们联系在一起。
在您的页面视图中,您可以通过将原始请求对象以及他们需要的任何其他内容传递给其他视图方法来调用它们。您可以将来自这些视图响应的 .context 包装在 DIV 中,或者可以通过 javascript 动态更新的东西(jQuery 使这相对轻松)。
为了使用极简视图更新这些 DIV,您当然需要在 urls.py 中设置它们。您可能会使用 jQuery 将一些 GET 或 POST 数据传递给那些较小的视图。
另外,我建议将 AJAX 用作“最后的手段”。我的意思是,如果您有一个相对较小的静态数据列表,只需将其全部传递到 javascript 中的主视图并在客户端对其进行操作。但是,如果您有一个更大的数据集或一些非常快速变化的动态内容(或任何其他类型的不可靠数据),那么 AJAX 是一个很好的用途。
【讨论】:
你需要做的就是submit使用ajax的表单
例子:
$('#form').bind('submit', function(){
$.ajax({url:$(this).attr('action'),
type: "POST",
data: {//form inputs},
success:function(response){
// code to update DOM
}
});
return false;
});
这将使用 ajax 提交表单并停止页面重新加载。
我建议你看看django ajax example,这对在 django 上处理 ajax 有一个清晰的解释。
【讨论】:
这个jquery plugin 对你想要的很有用。
【讨论】: