如何刷新Django模板中的表

时间:2014-02-05 10:29:36

标签: javascript jquery python django

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

在我的views.py

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

我的bar.html(模板)

<div id = "roman">
    {% for trun in testruns %}

        <tr>
            <td>{{ trun.testprofile }}</td>
            <td>{{ trun.time }}</td>
            <td>{{ trun.testresult }}</td>
            <td>{{ trun.state }}</td>
        </tr>
    {% endfor %}
</div>

有两种方法可行:

  • 使用dajaxice
  • 使用[Jquery]

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

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

2 个答案:

答案 0 :(得分:0)

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

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

  2. 如果您在表格中使用基于javascript的组件(也许 基于dojo的按钮等)他们可能会遇到一些问题。我曾有一个 dojo中的smilar问题,我在make dojo reparse中找到了解决方案 应用的html。但是,每次生活都不容易 方法更好。

答案 1 :(得分:0)

如果这只是您需要自动刷新的地方,您的方法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)

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