Openstack Horizon开发 (二)


一、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
 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值