刷新桌与Django中的Dajaxice

时间:2010-09-21 10:04:23

标签: ajax django django-views

我正在监控不同位置的温度。我将数据存储在模型中并设置了我的views.py,但我想每隔5分钟刷新一次表。我是ajax和dajaxice的新手,如何编写函数以便在html中显示?这是我的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})

至于我认为到目前为止我所理解的,这可能是我的ajax.py,我应该修改它以返回一个simplejson转储。如果我错了,请纠正我。这是我的temp.html:

<table id="tval"><tr>
{% for label, value in temperature.items %}
      <td>{{ label }}</td>
      <td>{{ value }}</td>
{% endfor %}
    </tr></table>

这是我被卡住的地方。我怎么写这个以便我的回调刷新表?

1 个答案:

答案 0 :(得分:6)

使用类似的东西:

from django.template.loader import render_to_string
from django.utils import simplejson
from dajaxice.core import dajaxice_functions

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
  table = render_to_string('temp.html', {'temperature': temperature_dict})
  return simplejson.dumps({'table':table})

dajaxice_functions.register(temperature)

作为JS回调,将'table'分配给你的html容器......(这只是一个例子):

function my_callback(data){
    if(data!=Dajaxice.EXCEPTION){
        document.getElementById('your_table_container_id').innerHTML = data.table;
    }
    else{
        alert('Error');
    }
}

希望这对你有所帮助。