一、Table 文件
table 文件主要 用于显示 表格的结构。
一个基本的table文件如下所示:
from horizon import tables
class FlockingInstancesTable(tables.DataTable):
host = tables.Column("OS-EXT-SRV-ATTR:host", verbose_name=_("Host"))
tenant = tables.Column('tenant_name', verbose_name=_("Tenant"))
user = tables.Column('user_name', verbose_name=_("user"))
vcpus = tables.Column('flavor_vcpus', verbose_name=_("VCPUs"))
memory = tables.Column('flavor_memory', verbose_name=_("Memory"))
age = tables.Column('age', verbose_name=_("Age"))
class Meta:
name = "instances"
verbose_name = _("Instances")
代码分析:
首先要从horizon包中引进 tables.
继承自tables.DataTable类
每一个tables.Column 都是要显示在表格中的一列,verbose_name 是 要显示在浏览器上的别名
每个Meta 表示整个表的属性,verbose_name 显示的是整个表的名字。
二、Tabs 文件
tabs 文件主要用于配置选项卡
Tabs文件和 panel 文件类似,每一个Tabs Group 都包含 很多个tab
TabGroup类 :
一个TabGroup 文件如下所示:
class SystemInfoTabs(tabs.TabGroup):
slug = "system_info"
tabs = (ServicesTab, NovaServicesTab,
NetworkAgentsTab, DefaultQuotasTab)
sticky = True
继承自 tabs.TabGroup
tabs 里面的值为 包含的tab
Tab类:
class DefaultQuotasTab(tabs.TableTab):
table_classes = (tables.QuotasTable,)
name = _("Default Quotas")
slug = "quotas"
template_name = constants.INFO_DETAIL_TEMPLATE_NAME
def get_quotas_data(self):
request = self.tab_group.request
try:
data = quotas.get_default_quota_data(request)
except Exception:
data = []
exceptions.handle(self.request, _('Unable to get quota info.'))
return data
类继承自 tabs.TableTab
template_name 指定了 所使用的模板
在同一目录下的constant文件中定义。
三、Views 文件
views文件用于向table 进行传参
class IndexView(tables.DataTableView):
table_class = project_tables.AdminImagesTable
template_name = 'admin/images/index.html'
def has_more_data(self, table):
return self._more
def get_data(self):
images = []
filters = {'is_public': None}
marker = self.request.GET.get(
project_tables.AdminImagesTable._meta.pagination_param, None)
try:
images, self._more = api.glance.image_list_detailed(self.request,
marker=marker,
paginate=True,
filters=filters)
except Exception:
self._more = False
msg = _('Unable to retrieve image list.')
exceptions.handle(self.request, msg)
return images
继承自tabs.TabbedTableView类
要从同一目录下引进 tabs,有的时候也要引进tabel