OpenStack horizon源代码解析
HorizonSite类代表整个网站,是整个程序结构的集合体。其中HorizonSite类继承自Site类通过类变量实现单件模式,产生全局单一的变量。Site类为一个Container,里边包含dashbord的相关方法,dashboard的注册解析,panel的注册方法,处理各个dashboard目录下的panel的url结构的解析,dashboard,panel相关目录的模块载入,网站的初始化相关信息。
一个site下有多个Dashboard,一个Dashboard下有多个PanelGroup,一个PanelGroup有多个Panel。其中project和admin是Dashboard,system panel,other是PanelGroup,里边的条目自然就是Panel。
Horizon的编程模型采用view template的方式,这是一种django官方推荐的一种编程方式就是通过不继承view基类来实现自己的view,就是使用类的继承方式,而不是传统的model,函数的方式,使用这样方式可以利用面向对象的优点使程序更清晰虽然可能会使程序更复杂。大家如果想看懂Horizon的代码的话可以先上django官网熟悉一下这方面的知识。
Horizon中自定义的view主要有以下几类,ModalFormView就是Horizon起的遮罩层要用户填信息,改信息时用到的。MultiTableView就是所有表格或多表格形式的页面要用的。TabView就是有tab页的页面中使用的。用户可以通过继承这些类型的预定义的View类,和继承实现所需的相关的类,来呈现自己所需要的不同形式的视图页面。