自动化监控系统(三) 搭建xadmin做网站后台

news/2024/5/13 16:06:13/文章来源:https://blog.csdn.net/weixin_30267785/article/details/96560329

Django有个自带的admin后台,不过界面不怎么好看,这里我用xadmin

 

我的python版本是3.5,可以使用支持py3的xadmin:https://github.com/sshwsfc/xadmin

xadmin部署步骤:

1、把xadmin整个目录拷贝到项目里面

2、需要安装的依赖包:

django~=1.9.0
django-crispy-forms~=1.6.0
django-reversion~=2.0.0
django-formtools==1.0
future==0.15.2
httplib2==0.9.2
six==1.10.0

3、注册xadmin:

把xadmin,crispy_forms,reversion注册到install_apps里面,然后再添加xadmin的url配置就可以了。

import xadminurlpatterns = [url(r'^xadmin/', xadmin.site.urls),
]

 

4、使用django的命令行工具生成xadmin数据表,然后创建管理后台的超级用户:

分别执行makemigrations和migrate

 创建管理后台的超级用户

 

接着输入email和passwd就可以登陆了。

英文界面不怎么友好,改成中文(我英语不好)

 在settings里修改配置:

#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/shanghai'USE_I18N = TrueUSE_L10N = True#这里是指定默认时间,如果为True,则写进数据库的时间是utc时间,需要改成False
USE_TZ = False

 很明显,我在monitor app的model里创建的表在这里没显示,因为xadmin的使用,首先需要对model进行注册,才能在后台管理中进行操作。

1、在app里创建py文件:adminx(必须这个名称)

2、导入xadmin和models里的类,格式如下:

 

#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = "BIGNI"
__date__ = "2017/4/9 21:08"import xadminfrom django import forms
from xadmin import views
from  monitor import models
# Register your models here.# from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.forms import ReadOnlyPasswordHashFieldclass UserCreationForm(forms.ModelForm):"""A form for creating new users. Includes all the requiredfields, plus a repeated password."""
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput)password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)class Meta:model = models.UserProfilefields = ('email','name')def clean_password2(self):# Check that the two password entries matchpassword1 = self.cleaned_data.get("password1")password2 = self.cleaned_data.get("password2")if password1 and password2 and password1 != password2:raise forms.ValidationError("Passwords don't match")return password2def save(self, commit=True):# Save the provided password in hashed formatuser = super(UserCreationForm, self).save(commit=False)user.set_password(self.cleaned_data["password1"])if commit:user.save()return userclass UserChangeForm(forms.ModelForm):"""A form for updating users. Includes all the fields onthe user, but replaces the password field with admin's
    password hash display field."""
    password = ReadOnlyPasswordHashField(label="Password",help_text=("Raw passwords are not stored, so there is no way to see ""this user's password, but you can change the password ""using <a href=\"password/\">this form</a>."))class Meta:model = models.UserProfilefields = ('email','password','is_active', 'is_admin')def clean_password(self):# Regardless of what the user provides, return the initial value.# This is done here, rather than on the field, because the# field does not have access to the initial valuereturn self.initial["password"]class UserProfileAdmin(object):# The forms to add and change user instancesform = UserChangeFormadd_form = UserCreationForm# The fields to be used in displaying the User model.# These override the definitions on the base UserAdmin# that reference specific fields on auth.User.list_display = ('id','email','is_admin','is_active')list_filter = ('is_admin',)list_editable = ['is_admin']fieldsets = ((None, {'fields': ('email','name', 'password')}),('Personal info', {'fields': ('phone','weixin','memo',)}),('用户权限', {'fields': ('is_active','is_staff','is_admin','user_permissions','groups')}),)# add_fieldsets is not a standard ModelAdmin attribute. UserAdmin# overrides get_fieldsets to use this attribute when creating a user.add_fieldsets = ((None, {'classes': ('wide',),'fields': ('email',  'password1', 'password2','is_active','is_admin')}),)search_fields = ('email',)ordering = ('email',)filter_horizontal = ('user_permissions','groups')class HostAdmin(object):list_display =  ('id','name','ip_addr','status')filter_horizontal = ('host_groups','templates')class HostGroupAdmin(object):style_fields = {'templates': 'm2m_transfer'}class TemplateAdmin(object):filter_horizontal = ('services','triggers')style_fields = {'services':'m2m_transfer','triggers':'m2m_transfer'}class ServiceAdmin(object):filter_horizontal = ('items',)list_display = ('name','interval','plugin_name')style_fields = {'items': 'm2m_transfer'}#list_select_related = ('items',)class TriggerExpressionInline(object):model = models.TriggerExpression#exclude = ('memo',)#readonly_fields = ['create_date']class TriggerAdmin(object):list_display = ('name','severity','enabled')inlines = [TriggerExpressionInline,]#filter_horizontal = ('expressions',)class TriggerExpressionAdmin(object):list_display = ('trigger','service','service_index','specified_index_key','operator_type','data_calc_func','threshold','logic_type')class BaseSettings(object):enable_themes = Trueuse_bootswatch = Trueclass GlobalSettings(object):site_title = "大倪的自动化监控系统"site_footer = "如有雷同,纯属巧合"menu_style = "accordion"# class ServiceIndexAdmin(object):
#     style_fields = {'idc': 'm2m_transfer'}xadmin.site.register(models.Host,HostAdmin)
xadmin.site.register(models.HostGroup,HostGroupAdmin)
xadmin.site.register(models.Template,TemplateAdmin)
xadmin.site.register(models.Service,ServiceAdmin)
xadmin.site.register(models.Trigger,TriggerAdmin)
xadmin.site.register(models.TriggerExpression,TriggerExpressionAdmin)
xadmin.site.register(models.ServiceIndex)
xadmin.site.register(models.Action)
xadmin.site.register(models.ActionOperation)
#admin.site.register(models.ActionCondtion,ActionConditionAdmin)
xadmin.site.register(models.Maintenance)
xadmin.site.register(models.UserProfile,UserProfileAdmin)
xadmin.site.register(models.EventLog)xadmin.site.register(views.BaseAdminView,BaseSettings)
xadmin.site.register(views.CommAdminView,GlobalSettings)
View Code

 

 

 

遇到的问题:

1、

ManyToManyField类型的字段,在xadmin里只显示了一个选项框。解决方法:
在定义的类中,加上这个字段,其中templates对应字段名称,效果如下  style_fields = {'templates': 'm2m_transfer'}

 

转载于:https://www.cnblogs.com/laonicc/p/6687208.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_746762.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue+thinkJs博客网站(一)之vue多页面应用的webpack3配置

一.项目简介 本项目使用vue作为前端框架&#xff0c;thinkJs作为后端框架&#xff0c;构建个人博客网站&#xff0c;页面分为博客展示和后台管理&#xff0c;主要目的是学习使用thinkJs。现在只完成了主要的博客增删改功能&#xff0c;发现webpack的配置遇到了一些坑&#xff0…

御用导航官方网站提醒提示页_大众迈腾导航使用技巧 (一)

大众可以说近几年的发展非常快&#xff0c;仅车载收音机都更换了好几代了。从最初的单纯收音机到后来的6碟CD机RCD510&#xff0c;最初国内上市的导航RNS510&#xff0c;还有后来自带蓝牙的RNS315&#xff0c;再到PQ平台187A&#xff0c;当初抄的也是火的很几乎每天都能看到187…

目前vivo手机最新android版本,vivo-智能手机官方网站

年年岁岁花相似&#xff0c;岁岁年年flag不同。每到年初&#xff0c;大家都会立下flag让新的一年盎然无比。所以2020年的第一个周末&#xff0c;大家立下的flag提上日程了吗&#xff1f;没立上也没关系&#xff0c;先康康我们精心准备的蓝厂周报&#xff0c;再去想想新的一年要…

woo产品页面描述追加内容_SEO:结构化数据能否影响产品排名?

结构化数据标记在两方面帮助了电商卖家。首先&#xff0c;它帮助搜索引擎理解网页的内容和目的。例如&#xff0c;如果该页面正在销售啤酒制作工具包&#xff0c;结构化数据将帮助搜索引擎知道它是一个待售产品&#xff0c;而不是关于啤酒的博客文章。其次&#xff0c;结构化数…

移动端静态页面素材_如何使用织梦程序来建设移动网站

织梦程序简单&#xff0c;实用&#xff0c;是目前用户使用比较多的一种CMS管理系统。但是仍然会有一些SEO人员&#xff0c;不知道如何使用织梦程序来建设移动网站&#xff0c;接下来就详细的了解一下吧&#xff01; 1、安装Dedecms移动网站有两种方式 ①下载最新版本直接安装使…

java开发企业网站开发文档6_微信公众平台企业号开发Java版_6JS-SDK

AE AB BE AB BC λ &#xff0c;19191818AF AB BC CF AB BC AB AB BC λλλλ- &#xff0c;()221919191181818AE AF AB BC AB BC AB BC AB BCλλλλλλλλλ???????? ? ?????19199421cos1201818λλλλ?????2117172992181818λλ≥ 当且仅当2192λλ…

URL地址与网站根目录之间的关系

我们做网站都会用到域名&#xff0c;域名需要解析绑定才能访问。绑定域名的过程其实就是给域名指向一个服务器的访问目录。域名直接访问的目录就是我们的根目录。 对于根目录&#xff0c;空间和服务器设置的方法是不同的&#xff0c;空间的根目录一般是预先定义好的。比如景安的…

字体转换网站——Font Squirrel

转载自&#xff1a;http://www.5imoban.net/jiaocheng/CSS3_HTML5/2016/0714/1735.html html5之前&#xff0c;只要稍微特殊点的字体&#xff0c;都必须做成图片&#xff0c;以免客户端无法显示。而对于正文或者需要后台调用大量文字的地方&#xff0c;则无能为力。但是&#x…

某钓鱼网站测试记录

某钓鱼网站测试记录 http://fzbdfw.site/sqafgv/FL1W56/FF2DC6.html 最后 欢迎关注个人微信公众号&#xff1a;Bypass--&#xff0c;每周原创一篇技术干货。 posted 2017-10-30 11:14 Bypass 阅读(...) 评论(...) 编辑 收藏

ubuntu安装nginx和设置网站https访问

安装nginx 在控制台 输入 sudo apt-get install nginx 等待安装成功之后。可以打开浏览器。输入你的域名或者ip地址会出现"Welcome to nginx!"页面。表示安装成功。 申请SSL证书 SSL简介 SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全&#xff08;Tran…

网站入侵工具 SQL注入神器

0x 00 前言 SQLMAP 0x 01 注入原理 不说了 *****************************************结束分割线***************************************** 0x 02 安装SQLMap 1. 安装python 官网https://www.python.org/ 选择最新版本下载安装即可 因为SQLMap使用Python写的 &#xff0c;…

IIS6独立用户建立网站的方法,提高网站安全性

在Windows server 2003系统下&#xff0c;用IIS架设Web服务器&#xff0c;合理的为每个站点配置独立的Internet来宾账号&#xff0c;这样可以限制Internet 来宾账号的访问权限&#xff0c;只允许其可以读取和执行运行网站所的需要的程序。如果为网站内的网站程序、图片、附件或…

ico图标和制作网站(比特虫)

1.怎么找到网站的图标: 网址/favicon.ico 代码引入 <link rel"icon" href"//www.jd.com/favicon.ico" mce_href"//www.jd.com/favicon.ico" type"image/x-icon" />/*京东*/ <link rel"shortcut icon" href"/…

Web应急:网站被植入Webshell

Web应急:网站被植入Webshell 网站被植入webshell,意味着网站存在可利用的高危漏洞,攻击者通过利用漏洞入侵网站,写入webshell接管网站的控制权。为了得到权限 ,常规的手段如:前后台任意文件上传,远程命令执行,Sql注入写入文件等。 现象描述 网站管理员在站点目录下发现…

Web应急:网站被批量挂黑页

Web应急&#xff1a;网站被批量挂黑页 作为一个网站管理员&#xff0c;你采用开源CMS做网站&#xff0c;比如dedecms&#xff0c;但是有一天&#xff0c;你忽然发现不知何时&#xff0c;网站的友情链接模块被挂大量垃圾链接&#xff0c;网站出现了很多不该有的目录&#xff0c…

web应急:新闻源网站劫持

web应急&#xff1a;新闻源网站劫持 新闻源网站一般权重较高&#xff0c;收录快&#xff0c;能够被搜索引擎优先收录&#xff0c;是黑灰产推广引流的必争之地&#xff0c;很容易成为被攻击的对象。被黑以后主要挂的不良信息内容主要是博彩六合彩等赌博类内容&#xff0c;新闻源…

对English paper写作有帮助的相关网站

ListCitationPurdue Online Writing LabSynonymsThesaurusSemantic DomainsPhrasesAcademic PhrasebankLudwigLinggle写paper时重在自己的观点和逻辑&#xff0c;但是没有优质确切的语言还是无法有力地传达自己的观点&#xff0c;也有可能会因为自己的Chinglish使得别无法理解。…

Web应急:网站首页被篡改

Web应急&#xff1a;网站首页被篡改 网站首页被非法篡改&#xff0c;是的&#xff0c;就是你一打开网站就知道自己的网站出现了安全问题&#xff0c;网站程序存在严重的安全漏洞&#xff0c;攻击者通过上传脚本木马&#xff0c;从而对网站内容进行篡改。而这种篡改事件在某些场…

网站被植入Webshell,怎么处理?

网站被植入webshell,意味着网站存在可利用的高危漏洞,攻击者通过利用漏洞入侵网站,写入webshell接管网站的控制权。为了得到权限 ,常规的手段如:前后台任意文件上传,远程命令执行,Sql注入写入文件等。 现象描述 网站管理员在站点目录下发现存在webshell,于是开始了对入…

分享几个默认密码在线查询网站

网络设备忘记了密码&#xff0c;不要慌&#xff0c;先看一下厂家和型号&#xff0c;找找产品手册&#xff0c;不行就在线查一查&#xff0c;比如下面这几个网站&#xff0c;说不定有惊喜。本文分享几个默认密码在线查询网站&#xff0c;仅用于用户找回默认密码&#xff0c;不许…