2017-03-02 68 views
1

我想刷新我的谷歌图表每30秒嵌入一次的<div>,以显示其所用模型中数据的更新。Django - 使用Javascript刷新模板中div的最佳方法?

这里是模板:

metrics.html

{% extends 'metrics/metrics_header.html' %} 
{% block content %} 

    <h1>Metrics</h1> 
    <p>Submitted = {{ submitted }}, 
     Conforming = {{ conforming }} 
     Transcoding = {{ transcoding }} 
     Complete = {{ complete }} 
     Error = {{ error }} 
    </p> 

     <script type="text/javascript"> 
     google.charts.load("current", {packages:['corechart']}); 
     google.charts.setOnLoadCallback(drawChart); 
     function drawChart() { 
      var data = google.visualization.arrayToDataTable([ 
       ['Job State', 'Jobs', { role: "style" }], 
       ['Submitted', {{ submitted }},'blue'], 
       ['Conforming', {{ conforming }},'purple'], 
       ['Transcoding', {{ transcoding }},'yellow'], 
       ['Complete', {{ complete }},'green'], 
       ['Error', {{ error }},'red'] 
      ]); 

      var view = new google.visualization.DataView(data); 
      view.setColumns([0, 1, 
          { calc: "stringify", 
          sourceColumn: 1, 
          type: "string", 
          role: "annotation" }, 
          2]); 

      var options = { 
      title: "Total Number of Jobs Processed", 
      bar: {groupWidth: "100%"}, 
      legend: { position: "none" }, 
      }; 
      var chart = new google.visualization.ColumnChart(document.getElementById("columnchart_values")); 
      chart.draw(view, options); 
     } 
     </script> 
<div id="columnchart_values" style="width: 100%; height:600px;"></div> 
{% endblock %} 

我一直用这个来刷新整个页面:

<script> 
    setTimeout(function(){ 
     window.location.reload(true); 
    }, 5000); 
</script> 

你可以想像它看起来非常糟糕当整个页面每5秒重新加载一次时,是否有一种更加令人愉快的方式来重新加载包含jinja2变量的<div>

回答

0

我解决了我的问题,使用Jquery​​。

setInterval(function() { 

    $("#div-you-want-to-reload").load("url-for-source-content"); 

}, 1000); // This reloads the <div> every 1 second. 

我用这与Django的,所以我不得不创建一个视图创建"url-for-source-content",然后尊敬,在我的网址格式的应用程序。

相关问题