我不是在寻找确切的代码,而是在寻找有关我的问题的一些指导。在我的一个页面上,我想要一个小部分,告诉用户服务器上剩下的磁盘空间,我希望这个信息每30秒更新一次。我已经编写了代码来获取磁盘信息。但是,我不确定如何显示该信息并进行更新。这就是我所拥有的,只是为了给你一个视觉效果:
与我合作的HTML: {%extends" Checklist / base.html" %}
{% block main_content %}
<form action="{% url 'Checklist:run' %}" method="post"> {% csrf_token %}
<input type="submit" name="submit_button" value="Run">
</form>
<label for="disk_space">Disk Space: </label>
<input type="text" name="disk_space" value="{{ disk_space }}" id="disk_space">
{% endblock %}
HTML的视图功能:
def submit(request): #start scrtipt
submit.preProcess = subprocess.Popen(['chmod', '+x /home/psvuser/Desktop/test.sh'])
submit.process = subprocess.Popen(['/home/psvuser/Desktop/test.sh'])
global sem
sem = True
disk_space = request.get('disk_space', '')
disk_space = diskSpace()
start_time= int(round(time.time()))
f = open("/home/psvuser/Desktop/writer.txt", "a")
f.write(str(start_time))
f.write(", ")
return render(request, 'Checklist/stop.html')
我知道如何定期刷新页面,但是,我不知道如何显示&#39; disk_space&#39;到html。
答案 0 :(得分:1)
由于您希望在已加载页面时对服务器执行常规的异步调用,因此我将使用AJAX来解决此问题。
我通常会做这样的事情
def your_django_view(request):
# magic
server_data = '98% left!'
response_data['data'] = server_data
return HttpResponse(json.dumps(response_data), content_type="application/json")
然后在您的视图中,使用一些jquery(或javascript..whatever)来处理所有数据
$.ajax({type: 'POST',
url: '/function_url/',
data: {
},
success: function(response_data) {
var server_mem = response_data['data']
$('#disk_space').val(server_mem);
})
答案 1 :(得分:0)
在submit
视图的末尾使用此return语句:
return render_to_response('Checklist/stop.html',
{'disk_space':disk_space},
context_instance=RequestContext(request))
render_to_response
的第二个参数是您可以在模板中使用的{'key':value, 'key2':value2}
字典。