zoukankan      html  css  js  c++  java
  • openstack之horizon源码分析之二

    一、概述:

      django基础入手:

        django新建project:#django-admin startproject mysite

    1 生成如下目录:
    2 mysite
    3 ├── manage.py
    4 └── mysite
    5 ├── __init__.py
    6 ├── settings.py
    7 ├── urls.py
    8 └── wsgi.py

        创建一个app,名叫demo:#cd mysite; pythone manage.py startapp demo 

    1 则生成如下目录:
    2 demo/
    3 ├── __init__.py
    4 ├── admin.py
    5 ├── models.py
    6 ├── tests.py
    7 └── views.py

        把我们新定义的app加到settings.py中的INSTALL_APPS中

        修改 mysite/mysite/settings.py

                 ROOT_URLCONF = 'openstack_dashboard.urls'      -- 查看绑定的urls (openstack_dashboard/urls.py)
        INSTALLED_APPS = (
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',

          'demo', --here
        )
        备注,这一步是干什么呢? 新建的 app 如果不加到 INSTALL_APPS 中的话, django就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件)

       类比一下:

        my_horizon(应该叫horizon)目录下的openstack_dashboard 相当于第二层的mysite;而horizon/horizon相当于demo
        第二层的horizon被导入到my_horizone/openstack_dashboard/settings.py中,则根据py特性,Python中在导入一个包时,实际上导入了它的__init__.py文件,当我们导入Horizon这个包的时候,__init__.py文件自动运行,在__init__.py 文件中再导入其他的包,或者模块。其中在horizon包的__init__.py文件中,此时应该看my_horizon/horizon/__init__.py的这个文件; 

    跳转到horizon.base.py

      horizon/base.py,不足 1000 行,整体架构的核心,从这里出发去探索。一个进程只有一个 Site,一个 Site 有多个 Dashboard,一个 Dashboard 有多个 PanelGroup,一个 PanelGroup 有多个 Panel。 而 PanelGroup 的功能很弱,只是把下面的 Panel 组合了一下,Dashboard 的 _registerable_class 是 Panel。url 是 lazy 加载的方式,只有在第一次访问时才加载;

  • 相关阅读:
    TP5.1:request请求对象(使用四种方式获取)
    TP5.1:facade静态代理
    php:定义时间跳转到指定页面
    TP5.1:依赖注入、绑定一个类到容器里、绑定一个闭包到容器中
    sql:表中数据全部删除之后,重新插入时,从1开始增加
    通过CSS3实现:鼠标悬停图片360度旋转效果
    TP5.1 配置的获取与设置
    详细讲解:通过composer安装TP5.1(Thinkphp5.1)
    TP5.0: 显示错误信息
    socket2
  • 原文地址:https://www.cnblogs.com/chris-cp/p/6062628.html
Copyright © 2011-2022 走看看