• 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 %}
  • 相关阅读:
    NOI2014题解
    BZOJ 3514 (动态树)
    [HNOI 2013] 旅行 (数学)
    [HNOI 2013] 消毒 (搜索,二分图匹配)
    大学的第一个自己的程序
    回归了
    OI——不后悔的两年
    对于民科吧s5_or吧友自增树的复杂度计算
    好久没有冒过泡了。。。
    非常无聊——STD::sort VS 基数排序
  • 原文地址:https://www.cnblogs.com/pgxpython/p/10593507.html
Copyright © 2020-2023  润新知