使用模板系统时,在Django中使用JQuery刷新div
我想在Django中刷新包含温度数据的div标签。 每20秒获取一次数据。 到目前为止,我已使用以下function实现了这一目
function refresh() { $.ajax({ url: '{% url monitor-test %}', success: function(data) { $('#test').html(data); } }); }; $(function(){ refresh(); var int = setInterval("refresh()", 10000); });
这是我的urls.py:
urlpatterns += patterns('toolbox.monitor.views', url(r'^monitor-test/$', 'temperature', name="monitor-test"), url(r'^monitor/$', 'test', name="monitor"), )
views.py:
def temperature(request): temperature_dict = {} for filter_device in TemperatureDevices.objects.all(): get_objects = TemperatureData.objects.filter(Device=filter_device) current_object = get_objects.latest('Date') current_data = current_object.Data temperature_dict[filter_device] = current_data return render_to_response('temp.html', {'temperature': temperature_dict})
temp.html有一个include标记:
{% include "testing.html" %}
testing.html只包含一个for标签来遍历字典:
{% for label, value in temperature.items %} {{ label }} {{ value }} {% endfor %}
div每10秒刷新一次,允许我使用模板系统而不用js修补它。 但是,我在几分钟后同时反复拨打’/ monitor-test’,3-4。 此外,我想知道是否有更好的方法来实现这一点,同时能够在Django中使用模板系统。 谢谢。
我通常解决这种情况的3-4个“并发”请求的方法是将setTimeout()
调用放在我想重复运行的函数中。
function refresh() { $.ajax({ url: '{% url monitor-test %}', success: function(data) { $('#test').html(data); } }); setTimeout(refresh, 10000); } $(function(){ refresh(); });
这使得每次调用refresh
函数时,它都会自动将其自身设置为在10秒内再次调用。 另一个想法(如果你还有问题)是将setTimeout
移动到AJAX调用中的success函数中:
function refresh() { $.ajax({ url: '{% url monitor-test %}', success: function(data) { $('#test').html(data); } setTimeout(refresh, 10000); }); } $(function(){ refresh(); });
如果由于某种原因,AJAX调用不成功,那么该选项可能会有点粗略。 但是你可以随时和其他处理程序一起解决这个问题,我想……
我有一个建议(与您的问题没有特别相关)是将整个
事物放在您呈现的模板中并返回temperature
视图。 所以,在你的主模板中:
{% include 'testing.html' %}
并在testing.html
:
{% for label, value in temperature.items %} {{ label }} {{ value }} {% endfor %}
关于以你当前的方式插入表的一部分的东西让我想哭:)在AJAX调用中通过线路发送几个字节不应该伤害任何东西。
注意:如果’testing.html’的内容多于问题上的内容,则.js将是:
function refresh() { $.ajax({ url: '{% url monitor-test %}', success: function(data) { var dtr = $("#div_to_refresh", data); $('#div_to_refresh').html(dtr); } }); setTimeout("refresh()", 3000); } $(function(){ refresh(); });
- Django表示,对于JQuery AJAX请求,is_ajax是错误的
- Facebook:publish_actions的备注说,不会批准应用程序使用publish_actions
- IE8 Json问题
- 未捕获的TypeError:无法读取未定义的属性“ownerDocument”
- jquery ajax post list将”附加到django中的querydict
- Django – 如何在ajax函数下显示消息
- 在Django视图中调用’request.POST’时,Ajax POST不发送数据
- Backbone.js Collection和Tastypiefilter
- 缺少变量值时Django Template中的Javascript语法错误