Je souhaite actualiser un django contenant des données de température. Les données sont récupérées toutes les 20 secondes. Jusqu'à présent, je l'ai réalisé cela en utilisant ces fonctions:Actualiser div en utilisant JQuery dans Django lors de l'utilisation du système de gabarit
function refresh() {
$.ajax({
url: '{% url monitor-test %}',
success: function(data) {
$('#test').html(data);
}
});
};
$(function(){
refresh();
var int = setInterval("refresh()", 10000);
});
Et voici ma 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 a une balise include :
<table id="test"><tbody>
<tr>
{% include "testing.html" %}
</tr>
</tbody></table>
test.html juste contenir s une étiquette pour itérer dans le dictionnaire:
{% for label, value in temperature.items %}
<td >{{ label }}</td>
<td>{{ value }}</td>
{% endfor %}
Le div est actualisé toutes les 10 secondes et me permet d'utiliser le système de template sans patcher avec js. Cependant, je reçois des appels répétés à '/ monitor-test', 3-4 en même temps après quelques minutes. Aussi, je me demandais s'il y avait une meilleure façon de faire cela tout en étant capable d'utiliser le système de template dans Django. Merci
Merci! Bien que j'ai essayé les deux fonctions js, il a encore demandé 3-4 appels simultanés. Je l'ai changé pour setTimeout et ça a marché ok. – dura
Doh !! C'est ce que j'avais en tête quand je voyais/écrivais setInterval. Belle prise! – codekoala