Обновите значения таблицы HTML в шаблоне Django с помощью AJAX - PullRequest
0 голосов
/ 16 февраля 2019

По сути, я пытаюсь сделать то же самое, что и автор этого и этого .Что означает динамическое обновление значений html-шаблона в шаблоне django с помощью вызова ajax.

Им обоим удалось решить их проблему, однако я не могу сделать это через 1,5 дня.

index.html

{% extends 'app/base.html' %}
{%load staticfiles %}
{% block body_block %}
    <div class="container" >

        {% if elements %}
            <table id="_appendHere" class="table table-bordered">

                <tr>
                    <th>A</th>
                    <th>B</th>
                    <th>C</th>
                    <th>D</th>
                    <th>User</th>
                    <th>Date</th>
                </tr>

                {% for e in elements %}
                    <tr>
                        <td><a href="{{ e.A.url }}">{{e.A}}</a></td>
                        <td><a href="{{ e.B.url }}">{{e.B}}</a></td>
                        <td>{{ e.C }}</td>
                        <td>{{ e.D }}</td>
                        <td>{{ e.User  }}</td>
                        <td>{{ e.Date }}</td>

                    </tr>
                {% endfor %}  
            </table>

        {% else %}
            No data to display! <br/>

        {% endif %}
    </div>
{% endblock %}

<script>

var append_increment = 0;
setInterval(function() {
    $.ajax({
        type: "GET",
        url: "{% url 'get_more_tables' %}",  // URL to your view that serves new info
        data: {'append_increment': append_increment}
    })
    .done(function(response) {
        $('#_appendHere').append(response);
        append_increment += 10;
    });
}, 1000)

</script>

views.py

def index(request):

    elements = ElementFile.objects.all().order_by('-upload_date')
    context_dict = {'elements':elements}

    response = render(request,'app/index.html',context_dict)
    return response

def get_more_tables(request):
    increment = int(request.GET.get('append_increment'))
    increment_to = increment + 10
    elements = ElementFile.objects.all().order_by('-upload_date')[increment:increment_to]
    return render(request, 'app/get_more_tables.html', {'elements': elements})

get_more_tables.html

{% for e in elements %}
    <tr>
        <td><a href="{{ e.A.url }}">{{e.A}}</a></td>
        <td><a href="{{ e.B.url }}">{{e.B}}</a></td>
        <td>{{ e.C }}</td>
        <td>{{ e.D }}</td>
        <td>{{ e.User  }}</td>
        <td>{{ e.Date }}</td>
    </tr>
{% endfor %}

urls.py


urlpatterns = [
    path('', views.index, name=''),
    path('get_more_tables/', views.get_more_tables, name='get_more_tables'),
        ]

в части javascript я пытался: url: "{% url 'get_more_tables' %}", с кавычками и без

Если я пытаюсь получить доступ к / get_more_tables /, я получаю следующую ошибку:

TypeError at / get_more_tables /

Аргумент int () должен быть строкой, байтовоподобным объектом или числом, а не NoneType

Так что по какой-то причине я ничего не получаю, append_increment - пустой словарь.Но почему?Я пытался изменить код, но безрезультатно:

    try:
        increment = int(request.GET.get('append_increment'))
    except:
        increment = 0

Ожидание: динамическая загрузка базы данных. Результат: ошибка или не динамическая загрузка (необходимо обновить вручную)

Миллион, спасибо всем, ктопытается помочь с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...