如果您正在寻找自动更新 HTML 中字段的代码,这里是您可以使用的代码。 JavaScript 中的 setInterval 计划每 1 秒提取一次 get_log 视图,以获取 get_log_from_disk 方法的结果。
urls.py
url(r'^get_log/$', 'myapp.views.get_log', name='get_log'),
url(r'^submit/$', 'myapp.views.submit', name='submit'),
views.py
def submit(request):
## Handle POST
## Your code comes here
return render(request, 'submit.html', {})
def get_log_from_disk():
## Your code comes here
return "Test 1 OK; Test 2 OK"
def get_log(request):
results = get_log_from_disk()
return HttpResponse(results)
在submit.html中添加
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>
[<div id="output_box"></div>]
<script>
$(document).ready(function() {
$.ajaxSetup({ cache: false }); // This part addresses an IE bug. without it, IE will only load the first number and will never refresh
var my_refresh = setInterval(function() {
$('#output_box').load('/get_log/');
}, 1000); // the "1000"
});
</script>
</body>
您可以修改“$('#output_box').load('/get_log/');”要测试请求的状态,当返回“204 No Content”时,您可以删除该函数 (clearInterval(my_refresh );)
see 停止 JavaScript 中的 setInterval 调用
修改 get_log 视图,当没有更多内容要发送时返回“204 No Content”。
这里我上传了工作版本
https://github.com/lukaszszajkowski/Django-jQuery-Example-update-part-of-page/tree/master
一些阅读
使用 jQuery 自动刷新 div - setTimeout 或其他方法?