生成数据表以在Django模板中进行迭代

时间:2019-05-05 00:01:58

标签: django

我具有使用PrettyTables收集有关用户拥有的虚拟机的信息的功能。目前,它仅显示信息并且运行良好。我有一个新的想法,我想在新列中添加一个按钮,以允许用户重新启动虚拟机。我已经知道如何重新启动虚拟机,但是我要努力找出的是创建数据集的最佳方法,我可以对其进行迭代,然后创建HTML表。我过去在PHP / SQL中做过类似的事情,这很简单。我认为我无法遍历PrettyTables,所以我想知道我的最佳选择是什么?漂亮的表在简化表的创建方面做得非常好(如下所示)。我希望使用另一种方法,但也要使其非常简单。基本上,使其具有关联性并且易于迭代。欢迎其他任何建议。谢谢!

这是我当前的代码:

x = PrettyTable()
x.field_names = ["VM Name", "OS", "IP", "Power State"]
for uuid in virtual_machines:
  vm = search_index.FindByUuid(None, uuid, True, False)

  if vm.summary.guest.ipAddress == None:
    ip = "Unavailable"
  else:
    ip = vm.summary.guest.ipAddress

  if vm.summary.runtime.powerState == "poweredOff":
    power_state = "OFF"
  else:
    power_state = "ON"

  if vm.summary.guest.guestFullName == None:
    os = "Unavailable"
  else:
    os = vm.summary.guest.guestFullName

  x.add_row([vm.summary.config.name, os, ip, power_state])
table = x.get_html_string(attributes = {"class":"table table-striped"})
return table

这里是一个外观示例,也是我计划使用该按钮的示例。 http://prntscr.com/nki3ci

1 个答案:

答案 0 :(得分:0)

弄清楚如何查询prettytable。这是一个很小的补充,无需重做。

html = '<table class="table"><tr><th>VM Name</th><th>OS</th><th>IP</th><th>Power 
State</th></tr>'
htmlend = '</tr></table>'
body = ''
for vmm in x:
  vmm.border = False
  vmm.header = False
  vm_name = (vmm.get_string(fields=["VM Name"]))
  operating_system = (vmm.get_string(fields=["OS"]))
  ip_addr = ((vmm.get_string(fields=["IP"])))
  body += '<tr><td>'+ vm_name + '</td><td>' + operating_system + '</td> <td>'+ ip_addr +'</td> <td>ON</td></tr>'
html += body
html += htmlend
print(html)