Обновление табличных данных с использованием Ajax, не работающего в Django - PullRequest
3 голосов
/ 20 апреля 2019

Попытка впервые создать веб-приложение, используя Django. Пользовательский интерфейс таблицы из приведенного ниже сценария выполняет рендеринг данных впервые. Но, похоже, что вызов Ajax не вызывает get_more_tables в views.py и обновляет данные таблицы.

Я уже посмотрел, но не помог мой случай Перезагрузка данных таблицы в Django без обновления страницы

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]})

Я ожидаю, что данные таблицы для веб-сайта и время отклика будут обновляться каждые 10 секунд, печатая сообщение регистратора в get_more_tables. Я не вижу обновления данных таблицы или сообщения журнала в журналах, что заставило меня думать, что функция get_more_tables не вызывается. Может кто-нибудь помочь мне понять, почему функция get_more_tables в views.py не вызывается?

1 Ответ

1 голос
/ 20 апреля 2019

Ссылка, которую вы предоставили, была из моего старого ответа! Какой маленький мир.

В любом случае, ваша проблема находится на этой линии:

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

Одинарные кавычки отменяют друг друга - вы должны сделать так, чтобы это было так:

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

EDIT

Кроме того, похоже, что вам не хватает открывающего тега <script> перед вашим JS и закрывающего тега </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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...