我正在尝试在 open-stack-dashboard 中添加一个自定义仪表板,该仪表板将具有显示接受用户数据的表单的面板。在哪里为面板创建和定义我的 models.py,因为仪表板的 settings.py 不包含任何数据库配置?
1 回答
编辑:如果您使用的是 Liberty 版本或更高版本,我建议不要直接附加数据库。在外部创建自己的 rest API(使用 django-rest-framework 轻松完成)并使用 angularjs 获取数据。这是 Horizon 的新标准方式。
Horizon 没有数据库。它仅依赖于对 keystone 的 API 调用以及服务目录中公开的任何 API。如果您想存储自己的模型,您可以在任何 django 应用程序中以标准方式配置数据库。
在 openstack_dashboard/local/local_settings.py 中添加数据库信息,这样您就不会篡改默认设置。
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中导入dashboard包
# 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