xadmin后台页面的自定制(2)重写钩子函数版

由于项目有通过自定义页面来实现功能的需求,百度也查了很多资料,也没找到合适的方法,所以决定分析源码,通过对源码的分析,找到了此方法。

01-需求

首先,如果要在xadmin中展示一个数据管理页面,首先是在Django的models.py文件中创建一个Model类,
再通过adminx.py文件将创建的models注册到xadmin中,最后在页面上对该models对一些操作管理显示出来。
现在我们要新增一个自定义的页面,同样需要在models.py文件中新增一个类,并继承models.Model父类,
由于我们要创建的页面并不是用于作数据管理,所以该model中不需要编写任何的字段,直接写它的Meta和__str__方法即可:
# 例如:

class change_into(models.Model):

    class Meta:
        verbose_name = u"转入分析"
        verbose_name_plural = verbose_name
        db_table = 'change_into'

    def __str__(self):
        return self.Meta.verbose_name


class change_out(models.Model):

    class Meta:
        verbose_name = u"转出分析"
        verbose_name_plural = verbose_name
        db_table = 'change_out'

    def __str__(self):
        return self.Meta.verbose_name

02-重写get_context方法

# adminx.py
from xadmin.views.base import CommAdminView


class ChangeIntoAdmin(object):
    # 指向自定义的页面
    object_list_template = 'change_into.html'

    # 重写方法,把要展示的数据更新到 context
    def get_context(self):
        context = CommAdminView.get_context(self)

        bill_message = bill_manage.objects.all()
        context.update(
            {
                'title': '转入分析',
            }
        )

        return context


class ChangeOutAdmin(object):
    object_list_template = 'change_out.html'

    def get_context(self):
        context = CommAdminView.get_context(self)

        bill_message = bill_manage.objects.all()
        context.update(
            {
                'title': '转出分析',
                'bill_message': bill_message,
            }
        )

        return context

xadmin.site.register(change_into, ChangeIntoAdmin)
xadmin.site.register(change_out, ChangeOutAdmin)

03-自定义的页

# change_into.html

{# 继承xadmin的侧边栏和导航栏 #}
{% extends 'xadmin/base_site.html' %}

{# 去掉标签栏 #}
{% block content-nav %}

{% endblock %}

{% block content %} 
{# 要展示的数据 #} 
    <h1>转入分析</h1> 
    {% for i in bill_message%}
        {{ i }}
    {% endfor %} 
{% endblock content %}

 

posted @ 2019-03-26 15:38  huangyanpeng  阅读(2708)  评论(2编辑  收藏  举报