По сути, я пытаюсь сделать то же самое, что и автор этого и этого .Что означает динамическое обновление значений 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
Ожидание: динамическая загрузка базы данных. Результат: ошибка или не динамическая загрузка (необходимо обновить вручную)
Миллион, спасибо всем, ктопытается помочь с этим.