基于Django的Admin后台实现定制简单监控页

我们使用Django的Admin二次定制一个图形化界面,首先我们把语言设置为中文简体.

修改: settings.py
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

修改: apps.py
from django.apps import AppConfig
class MywebConfig(AppConfig):
    name = 'MyWeb'
    verbose_name = "服务器参数收集"

接着我们来定义models.py数据库模型,定义基本的数据查询.

from django.db import models
from django.utils.html import format_html
import datetime

STATUS_CHOICES = (('d', '在用设备'), ('p', '下线设备'), ('w', '损坏设备'),)

# 定义主机基本信息表
class HostInfoDB(models.Model):
    id = models.AutoField(primary_key=True)
    # HostAddr = models.TextField(max_length=128,verbose_name="主机地址")
    HostAddr = models.CharField(max_length=128, verbose_name="主机地址")
    HostName = models.CharField(max_length=128, verbose_name="主机名称")
    HostType = models.CharField(max_length=128, verbose_name="系统类型")
    HostPosition = models.CharField(max_length=128, verbose_name="机房位置")
    HostPlatform = models.CharField(max_length=128, verbose_name="所属平台")
    HostGroup = models.CharField(max_length=128, verbose_name="分组")
    HostDataTime = models.DateTimeField(verbose_name="检查日期")
    HostUser = models.CharField(max_length=64, verbose_name="负责人")
    hostStats = models.CharField(max_length=1, choices=STATUS_CHOICES, verbose_name="设备状态")

    def __str__(self):
        return self.HostName

    # 用于给本表指定别名,这样前端就不是英文的了
    class Meta():
        verbose_name = "设备清单"
        verbose_name_plural = "设备清单"

    # 设备再用状态
    def Status(self):
        if self.hostStats == 'd':
            format_td = format_html('<span style="padding:2px;background-color:green;color:white">在用设备</span>')
        elif self.hostStats == 'p':
            format_td = format_html('<span style="padding:2px;background-color:yellow;color:black">下线设备</span>')
        elif self.hostStats == 'w':
            format_td = format_html('<span style="padding:2px;background-color:red;color:white">损坏设备</span>')
        return format_td

    Status.short_description = "当前状态"

# 指定Ping检测结果表
class HostPingInfo(models.Model):
    id = models.AutoField(primary_key=True)
    HostAddr = models.CharField(max_length=128, verbose_name="主机地址")
    flage = models.CharField(max_length=64)

    class Meta():
        verbose_name = "存活检测"
        verbose_name_plural = "存活检测"

    def Status(self):
        if self.flage == "True":
            ret = "已连接"
            color = "green"
            return format_html('<span style="color:{};">{}</span>',color,ret,)
        elif self.flage == "False":
            ret = "未连接"
            color = "red"
            return format_html('<span style="color:{};">{}</span>', color, ret,)
    Status.short_description = "状态"

# 定义CPU/内存利用率数据表结构
class HostCPUOrMemInfo(models.Model):
    id = models.AutoField(primary_key=True)
    HostAddr = models.CharField(max_length=128, verbose_name="主机地址")
    Cpu_Count = models.IntegerField()
    Mem_Count = models.IntegerField()

    class Meta():
        verbose_name = "CPU内存性能"
        verbose_name_plural = "CPU内存性能"

    def Cpu_Speed(self):
        return format_html('<progress max="100" value="{}"></progress>',self.Cpu_Count)

    def Mem_Speed(self):
        return format_html('<progress max="100" value="{}"></progress>',self.Mem_Count)

    def Check(self):
        return format_html('<a href="/admin/MyWeb/hostdb/{}/change/" rel="external nofollow" >查看</a>',self.id)

    Cpu_Speed.short_description = "CPU利用率"
    Mem_Speed.short_description = "Mem利用率"

继续定制admin.py并与上方的数据库视图相交互.

from django.contrib import admin
from MyWeb.models import *

# 必须继承ModelAdmin基类,才可以调整参数,HostDB则是你的表的名称
@admin.register(HostInfoDB)
class MyAdmin(admin.ModelAdmin):
    admin.site.site_title="后台管理"
    admin.site.site_header = "自动化监控平台"

    # list_display = 你需要展示的字段应该写在这里,此处是数据库中的字段
    list_display = ("HostAddr","HostName","HostType","HostPosition","HostDataTime","HostPlatform","HostGroup","HostUser","Status")
    # search_fields = 用于添加一个搜索框,此处作为查询条件
    #search_fields = ("HostAddr","HostType","Status",)
    # list_filter = 设置一个过滤器,此处是过滤条件
    list_filter = ("HostAddr","HostGroup",)
    # ordering = 设置一个排序条件,此处是以id作为排序依据
    ordering = ("id",)
    #list_per_page = 设置每页显示多少条记录,默认是100条
    list_per_page = 10
    #list_editable = 设置默认可编辑字段
    #list_editable = ("HostName",)
    # date_hierarchy = 显示详细时间分层筛选
    date_hierarchy = 'HostDataTime'
    # readonly_fields = 可以设置只读字段,就是无法修改的字段
    #readonly_fields = ("hostCPU","hostMEM",)

# 定义Ping检测显示字段
@admin.register(HostPingInfo)
class MyAdmin(admin.ModelAdmin):
    list_display = ("HostAddr","flage","Status")

# 定义内存CPU利用率字段
@admin.register(HostCPUOrMemInfo)
class MyAdmin(admin.ModelAdmin):
    list_display = ("id","HostAddr","Cpu_Count","Cpu_Speed","Mem_Count","Mem_Speed","Check")

保存后直接执行命令,完成命令行建表操作.

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

保存后启动,Django并访问http://127.0.0.1:8000/admin登录后我们依次看一下定制效果.

主页中的展示效果如下.

当我们需要增加自定义动作时,可以这样写,我们以HostCPUOrMemInfo为例

# 定义内存CPU利用率字段
@admin.register(HostCPUOrMemInfo)
class MyAdmin(admin.ModelAdmin):
    list_display = ("id","HostAddr","Cpu_Count","Cpu_Speed","Mem_Count","Mem_Speed")

    # 添加的自定义动作,此处可执行操作
    def func(self, request, queryset):
        # 此处可以写一些执行动作
        print(self, request, queryset)

    func.short_description = "自定义active动作"
    actions = [func, ]
    # Action选项都是在页面上方显示
    actions_on_top = True
    # Action选项都是在页面下方显示
    actions_on_bottom = False
    # 是否显示选择个数
    actions_selection_counter = True

以上就是基于Django的Admin后台实现定制简单监控页的详细内容,更多关于Django Admin后台定制监控页的资料请关注我们其它相关文章!

(0)

相关推荐

  • Django 实现admin后台显示图片缩略图的例子

    直接上代码 定义一个upload_img来返回显示图片的html 定义显示图片说明和allow_tags mark_safe方法于django.utils.safestring导入 from django.utils.safestring import mark_safe from django.contrib import admin @admin.register(AliOSSFile) class AliOssUploadAdmin(admin.ModelAdmin): def uploa

  • Django Admin后台添加数据库视图过程解析

    你通过以下语句,创建了一个数据库视图: create view entities_entity as select id, name from entities_hero union select 10000+id as id, name from entities_villain 它包含所有Hero和Villain对象的名称.Villain对象的的ID被设置都加上10000,因为Hero对象的数量不会超过这个数字. sqlite> select * from entities_entity;

  • Django Admin后台模型列表页面如何添加自定义操作按钮

    你需要添加两个按钮:一个按钮使所有英雄都可以死亡,而另一个按钮使所有英雄永生.由于它会影响所有英雄,而与选择无关,因此这需要一个单独的按钮,而不是操作下拉菜单. 首先,我们要更改HeroAdmin管理模型使用的模板文件,以便我们可以添加两个按钮: @admin.register(Hero) class HeroAdmin(admin.ModelAdmin, ExportCsvMixin): change_list_template = "entities/heroes_changelist.ht

  • Django怎么在admin后台注册数据库表

    django在admin后台注册自己创建的数据库表,这样我们就可以在admin后台看到表结构信息,我们就可以在admin后台快速录入表记录信息 如果没有注册,那么你在登录django自带的admin的后台,就看不到我们创建的表结构 登陆django的admin的后台会出现以下界面 这个时候需要把自己创建的数据表也注册到admin中,这个时候就需要在数据表对应的app中找到admin.py文件 加入以下代码: from .models import UserProfile class UserPr

  • Django基于Models定制Admin后台实现过程解析

    简介 效果预览 Django自带一个Admin后台, 支持用户创建,权限配置和所有模型的增删改查功能, 只需要一些简单的配置就可快速得到一个开箱可用的后台管理系统 操作步骤 1. 更改设置,使用中文/亚洲时区 修改项目下django_shop目录下的settings.py文件 修改以下三行 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_L10N = False 添加以下两行, 已更改时间显示格式 DATETIME_FORMAT

  • 基于Django的Admin后台实现定制简单监控页

    我们使用Django的Admin二次定制一个图形化界面,首先我们把语言设置为中文简体. 修改: settings.py LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' 修改: apps.py from django.apps import AppConfig class MywebConfig(AppConfig): name = 'MyWeb' verbose_name = "服务器参数收集" 接着我们来定义models.p

  • Django在admin后台集成TinyMCE富文本编辑器的例子

    Django原生的TextField并不友好,集成TinyMCE富文本编辑器 Django版本:1.11.5 TinyMCE版本:4.6.7 第一步:从官网下载TinyMCE https://www.tinymce.com/download/ 注意下载的是下面那个开发包,Dev Package.此包包含TinyMCE社区,开发工具和完整的源代码. 第二步:把压缩包内tinymce目录内的所有文件和文件夹复制到Django项目中static目录内: 第三步:编辑 admin.py 文件: from

  • 把django中admin后台界面的英文修改为中文显示的方法

    创建一个django工程,我使用的django 1.8.2,创建工程后,settings.py中设置中文显示支持定义 LANGUAGE_CODE = 'en-us'#改为zh-Hans 如果改为zh-cn则会报错 报错提示 django IOError: No translation files found for default language zh-cn 即找不到zh-cn对应的本地化文件.一般而言,zh-cn编码对应的本地化文件夹为zh_CN,我去django的安装目录查找zh_CN,结

  • Django 设置admin后台表和App(应用)为中文名的操作方法

    设置表名为中文 1.设置Models.py文件 class Post(models.Model): name = models.CharField() --省略其他字段信息 class Meta: verbose_name = "文章" # 单数形式显示的字段 verbose_name_plural = verbose_name # 复数形式显示字段,默认admin后台显示复数形式 重启服务,访问admin后台,就能看到中文名字了,如下图: 设置App(应用)为中文 1. 修改要修改的

  • django admin 后台实现三级联动的示例代码

    在刚进公司的时候,要写一个需求,使用django的admin站点管理,实现一个二级联动的功能,因为要用到django自带的页面,因为不是自定义的,不能直接添加js代码.根据我自己的研究简单的记录一下大概步骤. 项目创建流程略过,这里使用MySQL数据库和py3为例. 示例项目大概功能,添加一个人物信息,地区通过三级联动选择. 一.项目创建成功后,首先写模型类代码: class AreaInfo(models.Model): """地区模型类"""

  • 详解基于django实现的webssh简单例子

    本文介绍了详解基于django实现的webssh简单例子,分享给大家,具体如下: 说明 新建一个 django 程序,本文为 chain. 以下仅为简单例子,实际应用 可根据自己平台情况 进行修改. 打开首页后,需要输入1,后台去登录主机,然后返回登录结果. 正常项目 可以post 主机和登录账户,进行权限判断,然后去后台读取账户密码,进行登录. djang后台 需要安装以下模块 安装后会有一个版本号报错,不影响 channels==2.0.2 channels-redis==2.1.0 amq

  • django admin后管定制-显示字段的实例

    先说需求: 1.django 自带了admin后管,如果我们需要使用,只需把我们定义的models注册即可: 2.但如果只是简单注册,那显示的很简单,根本看不到每行记录的描述信息,全部以model object 形式显示,必须点击进去才能看到信息,太不方便,如下图: 1.显示关键信息 效果如下图,这样就好看多啦. 2.配置 在 admin.py 文件中配置一下就行. admin.py # Underwriter admin model class UnderwriterAdmin(admin.M

随机推荐