Django的Xadmin使用

Django Xadmin

一般在实际的开发当中, 除了先后端分离的项目, 还有一些先后端不分离的项目, 这样咱们在访问不分离的页面的时候, 就能够经过Django自带的admin管理模块来轻松实现后台管理, 可是因为你的审美要求较高咋办呢? 自带admin后台实在是太难看了, 也太难用了, 因而乎Xadmin就基于Django的admin开发了一个新的后台管理, 不只融合了admin的快速组成员管理, 还基于Bootstrap美化了界面, 还有更多图标显示等你来发崛css

undefined

Django Xadmin中文文档html

Djanog Xadmin Github传送门vue

**小知识点:**若是是先后端不分离的项目, 也是能够借用其余的admin客户端, 好比Vue有一个 vue-element-admin 也十分好看python

安装:切换到虚拟环境下

pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

注册app

INSTALLED_APPS = [
    # ...
    # xamin主体模块
    'xadmin',
    # 渲染表格模块
    'crispy_forms',
    # 为模型经过版本控制,能够回滚数据
    'reversion',
]

Xadmin数据库迁移

xadmin:须要本身的数据库模型类,完成数据库迁移, 迁移以后就会多出相对应的xadmin表linux

>: python manage.py migrate

undefined

设置Xadmin路由

设置主路由替换掉admin:主urls.pygit

# xadmin的依赖
import xadmin
xadmin.autodiscover()
# xversion模块自动注册须要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()

urlpatterns = [
    # 用Xadmin后台替换原生的admin后台
    path(r'xadmin/', xadmin.site.urls),
]

建立超级用户

建立超级用户:外层luffyapi路径终端github

>: python manage.py createsuperuser
帐号密码设置:admin | admin

完成全局美化配置

完成xadmin全局配置:新建home/adminx.py数据库

# home/adminx.py
# xadmin全局配置
import xadmin
from xadmin import views

class GlobalSettings(object):
    """xadmin的全局配置"""
    site_title = "路飞学城"  # 设置站点标题
    site_footer = "路飞学城有限公司"  # 设置站点的页脚
    menu_style = "accordion"  # 设置菜单折叠

xadmin.site.register(views.CommAdminView, GlobalSettings)

注册相应的字段以及Xadmin

在adminx.py中注册model:home/adminx.px

from . import models
# 注册
xadmin.site.register(models.Banner)

修改app:home的名字:xadmin页面上的显示效果

# home/__init__.py
default_app_config = "home.apps.HomeConfig"

# home/apps.py
from django.apps import AppConfig
class HomeConfig(AppConfig):
    name = 'home'
    verbose_name = '个人首页'

xadmin的使用

1.须要在app中建立adminx.py文件django

import xadmin
from repository import models
from xadmin import views

class UserProfileAdmin(object):
	# 显示的字段名称
    list_display = ['id','name' ,'email','phone','mobile']
	
	# 搜索时可输入的字段内容
    search_fields = ['id', 'name', 'email', 'phone']
    
    # 点击id可进入详细界面进行编辑(默认的)
    list_display_links = ('id',)  
    
    # 可编辑的列名
    list_editable = ['name' ,'email','phone','mobile']
    # list_filter = ['name' ,'email','phone','mobile']
	
	# 每页显示多少条
	list_per_page = 20 
	
	#根据id排序 
    ordering = ('id',) 
     
    #设置只读字段 
    readonly_fields = ('user_email',) 
    
    #显示本条数据的全部信息
    show_detail_fields = ['asset_name'] 

xadmin.site.register(models.UserProfile,UserProfileAdmin)

2.数据导出 若是想要导出Excel数据,须要安装xlwtjson

默认状况下,xadmin会提供ExcelCSV,XMLjson四种格式的数据导出,能够经过设置OptionClasslist_export属性来指定使用哪些导出格式(四种格式分别用xlscsvxmljson表示)或是将list_export设置为None来禁用数据导出功能

list_export = ('xls', 'xml', 'json')
list_export_fields = ('id', 'name', 'title')

3.设置全局的配置

# 全局修改,固定写法
class GlobalSettings(object):
    # 修改title
    site_title = 'xxx后台管理界面'
    # 修改footer
    site_footer = 'xxx的公司'
    # 收起菜单
    menu_style = 'accordion'
	
	# 设置 models图标
    # https://v3.bootcss.com/components/
    # http://www.yeahzan.com/fa/facss.html
	global_search_models = [models.Disk, models.Server]
    global_models_icon = {
        # Server: "glyphicon glyphicon-tree-conifer", Pool: "fa fa-cloud"
        models.Server: "fa fa-linux", models.Disk: "fa fa-cloud"
    }


# 将title和footer信息进行注册
xadmin.site.register(views.CommAdminView,GlobalSettings)

4.图表显示

data_charts = {
        "host_service_type_counts": {
            'title': '部门机器使用状况',
            'x-field': "business_unit",
            'y-field': ("business_unit"),
            'option': {
                "series": {"bars": {"align": "center", "barWidth": 0.8, "show": True}},
                "xaxis": {"aggregate": "count", "mode": "categories"}
            },
        },
        "host_idc_counts": {
            'title': '机房统计',
            'x-field': "idc",
            'y-field': ("idc",),
            'option': {
                "series": {"bars": {"align": "center", "barWidth": 0.3, "show": True}},
                "xaxis": {"aggregate": "count", "mode": "categories"}
            }
        }
    }

5.注册模型与对应的管理类

xadmin.site.register(models.Disk, DiskAdmin)
xadmin.site.register(models.Server, ServerAdmin)
xadmin.site.register(models.IDC, IDCAdmin)
xadmin.site.register(models.UserProfile, UserProfileAdmin)
xadmin.site.register(models.UserGroup, UserGroupAdmin)
相关文章
相关标签/搜索