在Django中使用Ajax来显示每秒的时间

时间:2015-09-21 19:04:45

标签: python ajax django

我正在寻找一个如何在django项目的页面上显示当前时间的简单示例。我尝试过搜索并提出以下内容(除非我刷新页面,否则不会更新):

这是我的urls.py:

from django.conf.urls import patterns, include, url
from garageMonitor.views import *
from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',
  url('time', time, name="time"),
)

这是我的views.py:

def time(request):
  now = strftime("%H:%M:%S", gmtime())

  time_dict = {"Time":now}
  return render_to_response('time.html', {'time': time_dict})

以下是time.html:

<script type="text/javascript"
src="/static/garageMonitor/scripts/refreshTime.js">
window.onload = refreshTime;
</script>
<table id="test"><tbody>
<tr>
{% include "testing.html" %}
</tr>
</tbody></table>

这是tests.html:

{% for label, value in temperature.items %}
      <td >{{ label }}</td>
      <td>{{ value }}</td>
{% endfor %}

这是我的refreshTime.js:

function refresh() {
    $.ajax({
        url: '{% url monitor-test %}',
        success: function(data) {
            $('#test').html(data);
        }
        setInterval("refreshTime()", 1000);
    });
}

$(function(){
    refresh();
});

我很感激任何帮助。

我查看了控制台中的代码。它抱怨这条线:

$(function(){

(它不喜欢&#34; $&#34;)

4 个答案:

答案 0 :(得分:1)

编辑:

你还需要jquery。在html中的其他脚本块之前添加<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>

请参阅有关setTimeout和setInterval的文档:http://www.w3schools.com/jsref/met_win_settimeout.asp http://www.w3schools.com/jsref/met_win_setinterval.asp

将javascript更改为:

function refresh() {
    $.ajax({
        url: '{% url monitor-test %}',
        success: function(data) {
            $('#test').html(data);
        }
    });
}

$(function(){
    setInterval(refresh, 1000);
});

或者这可能会更好:

function refresh() {
    $.ajax({
        url: '{% url monitor-test %}',
        success: function(data) {
            $('#test').html(data);
            setTimeout(refresh, 1000);
        }
    });
}

$(function(){
    refresh();
});

答案 1 :(得分:0)

我使用它,是django中的默认标记。

    <ul class="sidebar-stats">
        <li class="margin left right">
            <h5>{% now "j F Y H:i" %}</h5>
        </li>
    </ul>

答案 2 :(得分:0)

user1132959当场亮相!我需要补充一下:

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>

我在更新页面的每个周期的次数方面遇到了一些问题。我想这可能是因为缓存,但我不确定。 以下是我现在的工作情况。

<强> refreshTime.js:

function refreshTime() {
  $.ajax({
    url: '{% url time %}',
    success: function (data) {
      console.log("success function called");
      $('#test').html(data);
    }
  });
}


$( document ).ready(function () {
  console.log("setting interval");
      setTimeout(refreshTime,1000);
});

<强>为time.html:

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript" src="/static/garageMonitor/scripts/refreshTime.js"></script>

<table id="test">
  <tbody>
    <tr>
      {% include "testing.html" %}
    </tr>
  </tbody>
</table>

<强> urls.py:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
  url('time', time, name="time"),
)

<强> views.py:

def time(request):
  now = strftime("%H:%M:%S", gmtime())

  time_dict = {"Time":now}
  return render_to_response('time.html', {'time': time_dict})

我真的希望这能帮助其他人比我更快地完成他们的彩虹。

感谢所有帮助过我的人!

答案 3 :(得分:0)

您不需要Django,只需HTML和JavaScript。

在您的time.html文件中,使用以下命令显示当前时间(每秒更新):

<span id="time">

<script>
    function GetTime(){
    var dt = new Date();
    document.getElementByID("datetime").innerHTML = dt.toLocaleTimeString();
    }
    setInterval(GetTime,1000);
</script>