2016-12-21 3 views
1

Я не ищу точный код, а скорее руководство по моей проблеме. На одной из моих страниц я хочу иметь небольшую секцию, которая сообщит пользователю о дискового пространства на сервере, и я хочу, чтобы эта информация обновлялась каждые 30 секунд. У меня есть код, уже написанный для получения информации о диске. Однако я не уверен, как отображать эту информацию и обновлять ее. Это то, что у меня есть, просто чтобы дать вам визуальное:Использование Django Как я могу автоматически обновлять информацию о шаблоне

HTML, я работаю с: {% распространяется "Контрольный/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 %} 

The Views Функция для 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') 

у меня есть идея о том, как периодически обновлять страницу, однако, я не знаю, как отобразить «disk_space» на HTML.

ответ

0

Используйте этот оператор возврата в конце вашего submit зрения:

return render_to_response('Checklist/stop.html', 
    {'disk_space':disk_space}, 
    context_instance=RequestContext(request)) 

Второй аргумент render_to_response является словарь {'key':value, 'key2':value2} вы можете использовать в шаблоне.

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); 
    }) 
Смежные вопросы