我正在尝试在open-stack-dashboard中添加一个自定义仪表板,该仪表板将显示显示接受用户数据的表单的面板。在哪里创建和定义我的models.py到面板,因为仪表板的settings.py不包含任何数据库配置?
答案 0 :(得分:1)
编辑:如果您使用的是Liberty版本或更高版本,我建议不要直接附加数据库。在外部创建自己的rest API(使用django-rest-framework轻松完成)并使用angularjs获取数据。这是Horizon的新标准方式。
Horizon没有数据库。它只依赖于对keystone的API调用以及服务目录中公开的任何API。如果要存储自己的模型,可以在任何django应用程序中以标准方式配置数据库。
在openstack_dashboard / local / local_settings.py中添加db info,这样就不会篡改默认设置。
DATABASE_ROUTERS = [...]
DATABASES = {
'default': {},
'mydb1': { ... },
'mydb2': { ... },
}
这假设您实际上必须存储自定义数据。我猜想连接数据库或API以获取更多客户信息是很正常的。注册流程,结算信息和其他自定义内容。
还要确保在源树之外创建自定义内容,并在openstack_dashboard / local / enabled中将其挂钩。这使得在升级地平线源时将来更加清洁。
示例:
openstack_dashboard
├── ....
horizon
├── ...
mystuff
├── horizon
│ ├── mydashboard
│ │ ├── panel1
│ │ │ ├── __init__.py
│ │ │ ├── panel.py
│ │ │ ├── urls.py
│ │ │ ├── views.py
│ │ ├── panel2
│ │ │ ├── ....
│ │ ├── dashboard.py
│ │ ├── __init__.py
│ │ ├── models.py (Unless defined elsewhere)
│ │ ├── static
│ │ └── templates
然后在openstack_dashboard / local / enabled / _50_mydashboard.py中导入仪表板包
# The name of the dashboard to be added to HORIZON['dashboards']. Required.
DASHBOARD = 'mydashboard'
# If set to True, this dashboard will be set as the default dashboard when the user logs in
DEFAULT = False
# If set to True, this dashboard will not be added to the settings.
DISABLED = False
# A dictionary of exception classes to be added to HORIZON['exceptions'].
#ADD_EXCEPTIONS = {}
# A list of applications to be added to INSTALLED_APPS.
ADD_INSTALLED_APPS = ['mystuff.horizon.mydashboard']
对于仪表板和面板设置: http://docs.openstack.org/developer/horizon/topics/tutorial.html
自定义稳定主题: http://www.matthias-runge.de/custom-theme-for-horizon.html