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:包裝)。應該兩個效果都一樣。創建好後的結構如圖

 

這裏假設創建了access_and_security,以此分析。

打開dashboards下dashboard.py,模仿其他的mypanel定義方式,添加類代碼並寫入class project 類裏的panels裏。在access_and_security這個文件夾下__init__.py是自動產生的,panel.py,創建好後這個不需要修改,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類

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的錯誤日誌,可以找到錯誤原因。定位到最後三行,最後一行顯示錯誤的原因,倒數第二行顯示錯誤地方的代碼,倒數第三行顯示錯誤的具體位置(行數)。

 

 

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章