DjangoX 首页面板的使用

概述

DjangoX系统默认会产生一个面板页,也就是首页,可以通过site.show_default_index = False关闭面板首页的产生

使用方法

首页面板对应的管理类为 views.website.IndexView 可以通过下面的方式来做页面内容的定制

通过设置 widget 来产生 Dashboard 页面内容块

  1. # 站点首页设置
  2. class MainDashboard(object):
  3. title = '我的面板'
  4. widgets = [
  5. [
  6. {"type": "html", "title": "Test Widget", "content": "<h3> Welcome to DjangoX! </h3><p>Join us: <br/>Github : https://github.com/JoneXiong/DjangoX</p>"},
  7. {"type": "chart", "model": "app.accessrecord", 'chart': 'user_count', 'params': {'_p_date__gte': '2013-01-08', 'p': 1, '_p_date__lt': '2013-01-29'}},
  8. {"type": "list", "model": "app.host", 'params': {'o':'-guarantee_date'}},
  9. ],
  10. [
  11. {"type": "qbutton", "title": "Quick Start", "btns": [{'model': models.Host}, {'model': models.IDC}, {'title': "DjangoX", 'url': "https://github.com/JoneXiong/DjangoX"}]},
  12. {"type": "addform", "model": models.MaintainLog},
  13. ]
  14. ]
  15. site.register(views.website.IndexView, MainDashboard)

通过自定义模板来完全自主写首页面板内容

  1. class MainDashboard(object):
  2. template = 'ec/dashboard.html'
  3. widget_customiz = False
  4. title = '我的面板'
  5. site.register(IndexView, MainDashboard)

其中 widget_customiz 用于控制是否允许用户自定义自己的内容块

通过混合方式定制面板内容

  1. class MainDashboard(object):
  2. template = 'base/dashboard.html'
  3. widget_customiz = False
  4. def make_widgets(self):
  5. # 在这里动态构建用于显示的 widget 内容块
  6. # ...
  7. @filter_hook
  8. def get_context(self):
  9. context = super(MainDashboard, self).get_context()
  10. # 在这里添加额外的前端模块需要的变量数据
  11. # ...

模板

  1. {% extends base_template %}
  2. {% load i18n xadmin_tags %}
  3. {% block extrastyle %}
  4. # 这里添加额外要引入的静态文件
  5. <link href="{% static "base/css/dashboard.css" %}" rel="stylesheet">
  6. {% endblock %}
  7. {% block bodyclass %}dashboard{% endblock %}
  8. {% block breadcrumbs %}{% endblock %}
  9. {% block content-nav %}{% endblock %}
  10. {% block content %}
  11. # 这里添加自主的html内容
  12. # ...
  13. # 这里用于显示出后台构造的所有 widget 内容块
  14. <div class="dashboard row">
  15. {% for c in columns %}
  16. <div class="{{ c.0 }} column">
  17. {% for widget in c.1 %}
  18. {{ widget.widget|safe }}
  19. {% endfor %}
  20. </div>
  21. {% endfor %}
  22. </div>
  23. <input type='hidden' id='_portal_key' value='{{ portal_key }}' />
  24. {% endblock %}

Related