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 %}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM