从本质上讲,我正在尝试与this和this的作者做同样的事情 在尝试做。 通过ajax调用动态更新Django模板中html模板的值。
他们两个都设法解决了他们的问题,但是,我在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 / 我收到以下错误:
/ get_more_tables /
处的TypeErrorint()参数必须是字符串,类似字节的对象或数字,而不是'NoneType'
因此由于某种原因,我什么也没得到,append_increment是空字典。但为什么? 我尝试更改类似的代码,但无济于事:
try:
increment = int(request.GET.get('append_increment'))
except:
increment = 0
期望:动态加载数据库 结果:错误或非动态加载(必须手动刷新)
感谢所有尝试提供帮助的人。