Django自带的后台管理是Django明显特色之一,可以让我们快速便捷管理数据。后台管理可以在各个app的admin。py文件中进行控制。本文将主要介绍如何利用Admin后台实现监控页的定制,快来和小编一起学习一下吧 我们使用Django的Admin二次定制一个图形化界面,首先我们把语言设置为中文简体。修改:settings。pyLANGUAGECODEzhhansTIMEZONEAsiaShanghai修改:apps。pyfromdjango。appsimportAppConfigclassMywebConfig(AppConfig):nameMyWebverbosename服务器参数收集 接着我们来定义models。py数据库模型,定义基本的数据查询。fromdjango。dbimportmodelsfromdjango。utils。htmlimportformathtmlimportdatetimeSTATUSCHOICES((d,在用设备),(p,下线设备),(w,损坏设备),)定义主机基本信息表classHostInfoDB(models。Model):idmodels。AutoField(primarykeyTrue)HostAddrmodels。TextField(maxlength128,verbosename主机地址)HostAddrmodels。CharField(maxlength128,verbosename主机地址)HostNamemodels。CharField(maxlength128,verbosename主机名称)HostTypemodels。CharField(maxlength128,verbosename系统类型)HostPositionmodels。CharField(maxlength128,verbosename机房位置)HostPlatformmodels。CharField(maxlength128,verbosename所属平台)HostGroupmodels。CharField(maxlength128,verbosename分组)HostDataTimemodels。DateTimeField(verbosename检查日期)HostUsermodels。CharField(maxlength64,verbosename负责人)hostStatsmodels。CharField(maxlength1,choicesSTATUSCHOICES,verbosename设备状态)defstr(self):returnself。HostName用于给本表指定别名,这样前端就不是英文的了classMeta():verbosename设备清单verbosenameplural设备清单设备再用状态defStatus(self):ifself。hostStatsd:formattdformathtml(spanstylepadding:2backgroundcolor:color:white在用设备span)elifself。hostStatsp:formattdformathtml(spanstylepadding:2backgroundcolor:color:black下线设备span)elifself。hostStatsw:formattdformathtml(spanstylepadding:2backgroundcolor:color:white损坏设备span)returnformattdStatus。shortdescription当前状态指定Ping检测结果表classHostPingInfo(models。Model):idmodels。AutoField(primarykeyTrue)HostAddrmodels。CharField(maxlength128,verbosename主机地址)flagemodels。CharField(maxlength64)classMeta():verbosename存活检测verbosenameplural存活检测defStatus(self):ifself。flageTrue:ret已连接colorgreenreturnformathtml(spanstylecolor:{};{}span,color,ret,)elifself。flageFalse:ret未连接colorredreturnformathtml(spanstylecolor:{};{}span,color,ret,)Status。shortdescription状态定义CPU内存利用率数据表结构classHostCPUOrMemInfo(models。Model):idmodels。AutoField(primarykeyTrue)HostAddrmodels。CharField(maxlength128,verbosename主机地址)CpuCountmodels。IntegerField()MemCountmodels。IntegerField()classMeta():verbosenameCPU内存性能verbosenamepluralCPU内存性能defCpuSpeed(self):returnformathtml(progressmax100value{}progress,self。CpuCount)defMemSpeed(self):returnformathtml(progressmax100value{}progress,self。MemCount)defCheck(self):returnformathtml(查看,self。id)CpuSpeed。shortdescriptionCPU利用率MemSpeed。shortdescriptionMem利用率 继续定制admin。py并与上方的数据库视图相交互。fromdjango。contribimportadminfromMyWeb。modelsimport必须继承ModelAdmin基类,才可以调整参数,HostDB则是你的表的名称admin。register(HostInfoDB)classMyAdmin(admin。ModelAdmin):admin。site。sitetitle后台管理admin。site。siteheader自动化监控平台listdisplay你需要展示的字段应该写在这里,此处是数据库中的字段listdisplay(HostAddr,HostName,HostType,HostPosition,HostDataTime,HostPlatform,HostGroup,HostUser,Status)searchfields用于添加一个搜索框,此处作为查询条件searchfields(HostAddr,HostType,Status,)listfilter设置一个过滤器,此处是过滤条件listfilter(HostAddr,HostGroup,)ordering设置一个排序条件,此处是以id作为排序依据ordering(id,)listperpage设置每页显示多少条记录,默认是100条listperpage10listeditable设置默认可编辑字段listeditable(HostName,)datehierarchy显示详细时间分层筛选datehierarchyHostDataTimereadonlyfields可以设置只读字段,就是无法修改的字段readonlyfields(hostCPU,hostMEM,)定义Ping检测显示字段admin。register(HostPingInfo)classMyAdmin(admin。ModelAdmin):listdisplay(HostAddr,flage,Status)定义内存CPU利用率字段admin。register(HostCPUOrMemInfo)classMyAdmin(admin。ModelAdmin):listdisplay(id,HostAddr,CpuCount,CpuSpeed,MemCount,MemSpeed,Check) 保存后直接执行命令,完成命令行建表操作。pythonmanage。pymakemigrationspythonmanage。pymigratepythonmanage。pycreatesuperuser 保存后启动,Django并访问http:127。0。0。1:8000admin登录后我们依次看一下定制效果。 主页中的展示效果如下。 当我们需要增加自定义动作时,可以这样写,我们以HostCPUOrMemInfo为例 定义内存CPU利用率字段admin。register(HostCPUOrMemInfo)classMyAdmin(admin。ModelAdmin):listdisplay(id,HostAddr,CpuCount,CpuSpeed,MemCount,MemSpeed)添加的自定义动作,此处可执行操作deffunc(self,request,queryset):此处可以写一些执行动作print(self,request,queryset)func。shortdescription自定义active动作actions〔func,〕Action选项都是在页面上方显示actionsontopTrueAction选项都是在页面下方显示actionsonbottomFalse是否显示选择个数actionsselectioncounterTrue 以上就是基于Django的Admin后台实现定制简单监控页的详细内容 原文:https:www。jb51。netarticle231017。htm