使用Ajax刷新表数据在Django中不起作用

时间:2019-04-20 04:09:01

标签: javascript python ajax django

尝试首次使用Django构建Web应用程序。来自以下脚本的表UI首次呈现数据。但是Ajax调用似乎并未调用views.py中的get_more_tables并刷新表数据。

我已经看过了,但没有帮助我的案子Reload table data in Django without refreshing the page

home.html


{% extends "templates_dashboard/base.html" %}
{% block content %}

<head>
  <script src="https://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script> <!-- ADD THE CLOSING TAG HERE TOO! -->
  </head>

        <td class="more-padding-on-right">CURRENT RESPONSE TIME OF WEBSITES</td>
        <table id="_response_time" class="table table-striped table-condensed">
          <tr>
            <th>Website</th>
            <th>Current Response Time(ms)</th>
          </tr>
          {% for posts in posts2 %}

             <td>{{ posts.website }}</td>
             <td>{{ posts.response_time}}</td>
          </tr>
          {% endfor %}
        </table>




<script>  // <-- ADD THIS!
$(document).ready(function () {
    var append_increment = 0;
    setInterval(function() {
        $.ajax({
            type: "GET",
            url: "{% url 'get_more_tables' %}",
            data: {'append_increment': append_increment}
        })
        .done(function(response) {
            $('#_response_time').append(response);
            append_increment += 10;
        });
    }, 10000)
  })
</script>
{% endblock content %}

get_more_tables.html

{% load static %}
{% for post in posts %}
<tr>
   <td>{{ post.website}}</td>
   <td>{{ post.response_time }}</td>
</tr>
{% endfor %}

urls.py

urlpatterns = [
    path('', views.home , name='dashboard-home'),
    path('about/',views.about, name='dashboard-about'),
    path('get_more_tables', views.get_more_tables , name='get_more_tables'),
]

views.py

def get_more_tables(request):
    logger.info('************************************************** Refreshing Table Content')
    increment = int(request.GET['append_increment'])
    increment_to = increment + 10
    my_response = responseTime()
    return render(request, 'templates_dashboard/get_more_tables.html', {'posts': my_response[increment:increment_to]})

我希望通过在get_more_tables中打印记录器消息,网站和响应时间的表数据每10秒刷新一次。我看不到刷新表数据或日志中的记录器消息,这使我认为没有调用get_more_tables函数。有人可以帮我理解为什么未调用views.py中的get_more_tables函数吗?

1 个答案:

答案 0 :(得分:1)

您提供的链接来自我的旧答案!多么小的世界。

无论如何,您的问题都在此行上:

url: '{% url 'get_more_tables' %}',

单引号互相抵消-您应该使它看起来像这样:

url: "{% url 'get_more_tables' %}",

编辑

此外,您似乎在JS之前缺少开头<script>标签,而在</script>导入之后缺少结尾jQuery标签:

<script src="https://code.jquery.com/jquery-3.2.1.min.js" type="text/javascript"></script> <!-- ADD THE CLOSING TAG HERE TOO! -->

<script>  // <-- ADD THIS!
$(document).ready(function () {
    var append_increment = 0;
    setInterval(function() {
        $.ajax({
            type: "GET",
            url: "{% url 'get_more_tables' %}",
            data: {'append_increment': append_increment}
        })
        .done(function(response) {
            $('#_response_time').append(response);
            append_increment += 10;
        });
    }, 10000)
})
</script>