如何刷新Django模板中的表

我目前正从我的视图中获取一个对象,并以表格的forms将其显示在模板中。 目前,我很震惊我们需要刷新表/ div的部分,而不刷新页面。

在我的views.py中

def foo(request): testruns...... render_to_response('pages/bar.html', locals(), context_instance=RequestContext(request)) 

我的bar.html(模板)

 
{% for trun in testruns %} {{ trun.testprofile }} {{ trun.time }} {{ trun.testresult }} {{ trun.state }} {% endfor %}

应该有两种方法可行:

  • 使用dajaxice
  • 使用[Jquery]

      $.ajax({ url: '{% url myview %}', success: function(data) { $('#the-div-that-should-be-refreshed').html(data); } }); 

我想知道哪种方法更适合我的情况。 使用方法2,表格会自动刷新,我们如何设置刷新时间?

第二种方法的可接受但缺点(从django拉表作为html):

  1. 通过网络传输的数据要大得多

  2. 如果您在表中使用基于javascript的组件(可能是基于dojo的按钮等),他们可能会遇到一些问题。 我在dojo中遇到了一个微笑的问题,我在make dojo中找到了解压缩应用的html的解决方案。 但每次生活都不容易,所以第一种方法更好。

如果这只是您需要自动刷新的地方,那么您的方法2应该与设置计时器一起进行自动刷新。 您可以使用setInterval函数来实现此目的:

 // Refresh the Table every 5 seconds setInterval(function(){ $.ajax({ url: '{% url myview %}', success: function(data) { $('#the-div-that-should-be-refreshed').html(data); } }); }, 5000) 

但是,如果您计划开发一个响应式网页,整个UI需要保持更新,那么我建议使用像ember.js这样的完整框架。