尝试首次使用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函数吗?
答案 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>