DjangoX 首页面板的使用
概述
DjangoX系统默认会产生一个面板页,也就是首页,可以通过site.show_default_index = False
关闭面板首页的产生
使用方法
首页面板对应的管理类为 views.website.IndexView
可以通过下面的方式来做页面内容的定制
通过设置 widget 来产生 Dashboard 页面内容块
# 站点首页设置
class MainDashboard(object):
title = '我的面板'
widgets = [
[
{"type": "html", "title": "Test Widget", "content": "<h3> Welcome to DjangoX! </h3><p>Join us: <br/>Github : https://github.com/JoneXiong/DjangoX</p>"},
{"type": "chart", "model": "app.accessrecord", 'chart': 'user_count', 'params': {'_p_date__gte': '2013-01-08', 'p': 1, '_p_date__lt': '2013-01-29'}},
{"type": "list", "model": "app.host", 'params': {'o':'-guarantee_date'}},
],
[
{"type": "qbutton", "title": "Quick Start", "btns": [{'model': models.Host}, {'model': models.IDC}, {'title': "DjangoX", 'url': "https://github.com/JoneXiong/DjangoX"}]},
{"type": "addform", "model": models.MaintainLog},
]
]
site.register(views.website.IndexView, MainDashboard)
通过自定义模板来完全自主写首页面板内容
class MainDashboard(object):
template = 'ec/dashboard.html'
widget_customiz = False
title = '我的面板'
site.register(IndexView, MainDashboard)
其中 widget_customiz 用于控制是否允许用户自定义自己的内容块
通过混合方式定制面板内容
class MainDashboard(object):
template = 'base/dashboard.html'
widget_customiz = False
def make_widgets(self):
# 在这里动态构建用于显示的 widget 内容块
# ...
@filter_hook
def get_context(self):
context = super(MainDashboard, self).get_context()
# 在这里添加额外的前端模块需要的变量数据
# ...
模板
{% extends base_template %}
{% load i18n xadmin_tags %}
{% block extrastyle %}
# 这里添加额外要引入的静态文件
<link href="{% static "base/css/dashboard.css" %}" rel="stylesheet">
{% endblock %}
{% block bodyclass %}dashboard{% endblock %}
{% block breadcrumbs %}{% endblock %}
{% block content-nav %}{% endblock %}
{% block content %}
# 这里添加自主的html内容
# ...
# 这里用于显示出后台构造的所有 widget 内容块
<div class="dashboard row">
{% for c in columns %}
<div class="{{ c.0 }} column">
{% for widget in c.1 %}
{{ widget.widget|safe }}
{% endfor %}
</div>
{% endfor %}
</div>
<input type='hidden' id='_portal_key' value='{{ portal_key }}' />
{% endblock %}