如何刷新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):
-
通过网络传输的数据要大得多
-
如果您在表中使用基于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这样的完整框架。