Я создаю базовый сайт управления облачной инфраструктурой, и у меня возникла проблема со страницей со списком виртуальных машин.
Приложение колбы извлекает список, созданный через API-интерфейсы различных облачных платформ, и имеет следующий формат:
vm_list = {
'vmid': [],
'name': [],
'state': [],
'platform': []
}
список заполняется путем циклического просмотра выходных данных API и добавления каждого из них.значение примерно так:
def zip_list():
...
for node in driver.list_nodes():
vm_list["vmid"].append(node.uuid)
vm_list["name"].append(node.name)
vm_list["state"].append(node.state)
vm_list["platform"].append(driver.name)
...
myVms = zip(vm_list['name'], vm_list['vmid'], vm_list['platform'], vm_list['state'])
return myVms
Я загружаю это через приложение фляги следующим образом:
@app.route('/vms/')
def vms():
myVms = {}
myVms = vm.zip_list()
return render_template('VMs.html', vm_list=myVms)
Страница VMs.html
загружает эти данные в таблицу:
<table class="tableClass">
<tr>
<th>Name</th>
<th>id</th>
<th>Plaform</th>
<th>State</th>
</tr>
{% for row in vm_list %}
<tr>
<td>{{ row[0] }}</td>
<td>{{ row[1] }}</td>
<td>{{ row[2] }}</td>
<td>{{ row[3] }}</td>
<tr>
{% endfor %}
</table>
И это прекрасно работает, загружая данные, как ожидалось.Однако моя проблема заключается в том, что каждый раз, когда я обновляю страницу, данные загружаются и снова добавляются в список, удваивая размер таблицы.Каждое обновление добавляет весь список vm_list
к таблице еще раз.
Я думал, что это можно решить, "обнуляя" переменную myVms
каждый раз, когда она вызывается (т.е. myVms = {}
) в скрипте приложения фляги и / или функции zip_list
, но это непохоже на работу;проблема все еще сохраняется.
Я также изучил кэширование флешки , чтобы посмотреть, будет ли очистка кэша флешки при каждой перезагрузке исправлять это, но, похоже, нет.
Я думаю, что я могу что-то изменить в html-файле, чтобы заставить его загружаться только один раз за сеанс или что-то подобное, но мои навыки интерфейса не достигают этого уровня.
Кто-нибудь знает, что я могу сделать в этой ситуации или где я иду не так?Любой совет с благодарностью.