一、配置主题功能
在任意一个应用下的新建 adminx.py
文件, 添加如下配置
#-*- coding:utf-8 -*-
import xadmin
from xadmin import views
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
xadmin.site.register(views.BaseAdminView, BaseSetting)
效果图:
二、页眉页脚配置注册
在任意一个应用下的新建 adminx.py
文件, 添加如下配置
#-*- coding:utf-8 -*-
import xadmin
from xadmin import views
class GlobalSetting(object):
site_title = '日志后台管理' #头部导航
site_footer = '日志后台管理' #底部版权内容
menu_style = 'accordion' #左侧导航折叠框
xadmin.site.register(views.CommAdminView, GlobalSetting)
效果图:
三、定义modle类注册到后台管理界面
1、model.py 文件内容
from django.db import models
class MBGLogData(models.Model):
'''报警信息表'''
alarmodule = models.CharField(max_length=32,verbose_name='报警模块',blank=True)
content = models.TextField(verbose_name='报警内容',blank=True)
createtime = models.DateTimeField(verbose_name='报警时间',editable=False)
dealman = models.ForeignKey(UserProfile,on_delete=models.CASCADE,verbose_name='处理人',blank=True,null=True)
alarmreason = models.TextField(verbose_name='报警原因',blank=True,null=True)
updatetime = models.DateTimeField(verbose_name='处理时间',auto_now=True)
status = models.CharField(max_length=32,verbose_name='处理后的状态',default='未处理')
def __str__(self):
return self.alarmodule
class Meta:
verbose_name ="未处理日志报警"
verbose_name_plural = verbose_name
class MBGDealLogData(MBGLogData):
class Meta:
verbose_name ="已处理日志报警"
verbose_name_plural = verbose_name
proxy = True #不会在新增新的表
2、在相关应用app文件夹中新建adminx.py 文件,并在其内进行相关设置
#-*- coding:utf-8 -*-
import xadmin
from xadmin import views
from app.models import MBGLogData
#这个测试暂时
# class UserInline(object):
# model = UserProfile
# extra = 0
class LogAdmin(object):
list_display = ['alarmodule','createtime','content','dealman','status']
# list_filter = ['createTime','alarmodule','dealman','status'] #过滤
search_fields = ['stauts','dealman'] #按照xx字段搜索
# list_editable = ['dealman']
readonly = ['alarmodule','createtime','content'] #只读
readonly_fields = ['content'] #只读的列
exclude = ['updatetime'] #点击详情页面不显示的列,注意和readonly_fields设置不要冲突
ordering = ['-createtime'] #createtime倒叙排列
relfield = 'fk-userprofile' #外键关联的列,fk是ForeignKey简写
# inlines = [UserInline] #在详情页面可以添加用户的表
list_per_page = 30
model_icon = 'fa fa-bolt' #样式地址:http://fontawesome.dashgame.com/
def queryset(self):
qs = super(LogAdmin, self).queryset()
qs = qs.filter(status='未处理')
return qs
class LogDealAdmin(object):
list_display = ['alarmodule', 'createtime', 'content', 'dealman', 'status']
search_fields = ['alarmodule','responsibilityman', 'dealman', 'status']
readonly_fields = ['alarmodule', 'createtime', 'content', 'dealman', 'status']
list_per_page = 30
model_icon = 'fa fa-star'
def queryset(self):
qs = super(LogDealAdmin, self).queryset()
qs = qs.exclude(status='未处理')
return qs
xadmin.site.register(MBGLogData,LogAdmin)
xadmin.site.register(MBGDealLogData,LogDealAdmin)
3、定义app显示名称
①在app应用下有个apps.py 文件
class AppConfig(AppConfig):
name = 'app'
verbose_name = '日志管理平台' #配置上着字段即可
②setting.py文件配置
INSTALLED_APPS = [
....
'app.apps.AppConfig',
]
③可选配置
如果在第②部INSTALLED_APPS 中填写的是 app
那么需要在app应用目录中的 __init__.py 中进行相关设置
default_app_config = 'app.apps.AppConfig' # '应用名.apps.(apps.py中的相关Config名称)'
4、效果图:
四、遇到的问题
1、执行 python manage.py makemigrations 的时候报以下问题
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3
解决方法:
进入到python安装目录下的 Lib\site-packages\django\db\backends\mysql 目录下,
打开 base.py,注释掉(35、36行)内容:
#if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
打开 operations.py 文件,将146行的decocde改为encode
if query is not None:
query = query.encode(errors='replace')
2、在xadmin后台添加插件报以下问题
render() got an unexpected keyword argument ‘renderer’
解决办法:
进入到python安装目录下的 Lib\site-packages\django\forms 目录下,
打开 boundfield.py,注释掉 93行:
return widget.render(
name=self.html_initial_name if only_initial else self.html_name,
value=self.value(),
attrs=attrs,
#renderer=self.form.renderer,
)