horizon学习小结(2)

1、写在前面

      上一篇说到mypanel,这里着重说说source code 。

2、content

      创建mypanel,可以利用如django创建的命令manage.py(和horizon,openstack_dashboard一个文件夹下)来创建,也可以通过run_test.sh来创建,关于这两者的difference 官方里有个答案(The run_tests.sh script provides wrappers around manage.py )(wrappers:包装)。应该两个效果都一样。创建好后的结构如图

horizon学习小结(2)_第1张图片 

这里假设创建了access_and_security,以此分析。

打开dashboards下dashboard.py,模仿其他的mypanel定义方式,添加类代码并写入class project 类里的panels里。在access_and_security这个文件夹下__init__.py是自动产生的,panel.pyhorizon学习小结(2)_第2张图片,创建好后这个不需要修改,slug表示id,一般要与文件夹名字一样,name是显示在页面的名字,汉化版的可以在openstack_dashboard/locale/zh_CH/LC_MESSAGES/django.po(这是中英文的显示文件)里修改其对应的中文显示,改过后执行django-admin compolemessages--local=zh_CN。tabs.py是负责分页标签,horizon提供TableTabs基类,作为class的参数传递来定义class。(作为参数传递的类可参考horizon的官方文档提供的内容)。tables.py(这里没有)是在页面显示出的表格,horizon提供DataTable基类,继承DataTable实现自定义的table。tests.py测试,还没具体写过。urls.py是链接views.py里的class名,如urls.py里链接views.py里的IndexView类horizon学习小结(2)_第3张图片

views.py

里继承horizon的TabbedTableView,包含了AccessAndSecurityTabs类,这个类在tabs.py代码段的最后,如图tabs.py

(python里类即对象,以面向对象的角度思考问题)。tabs包含的SecurityGroupsTabs,KeypairsTab,FloatingIpsTab,APIAccessTab是在tabs.py里定义的类,每一个类里都会对应一个template_name,这是对应分页显示的页面。

horizon提供了多种view类,views.py主要是来集成table或者tab的,也可以两种都包括。全部写完,重启Apache2,因为horizon是对应这个服务的(service apache2 restart)。

遇到错误的时:vi /var/log/apache2/error.log 查看Apache的错误日志,可以找到错误原因。定位到最后三行,最后一行显示错误的原因,倒数第二行显示错误地方的代码,倒数第三行显示错误的具体位置(行数)。

 

 

  

你可能感兴趣的:(Cloud,Computing,and,DM,and,BD)