• Django的Xadmin使用


    Django Xadmin

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

    undefined

    Django Xadmin中文文档

    Djanog Xadmin Github传送门

    小知识点:如果是前后端不分离的项目, 也是可以借用其他的admin客户端, 比如Vue有一个 vue-element-admin 也十分好看

    安装:切换到虚拟环境下

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

    注册app

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

    Xadmin数据库迁移

    xadmin:需要自己的数据库模型类,完成数据库迁移, 迁移之后就会多出相对应的xadmin表

    >: python manage.py migrate
    

    undefined

    设置Xadmin路由

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

    # 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路径终端

    >: 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文件

    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数据,需要安装xlwt

    默认情况下,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)
    
  • 相关阅读:
    【题解】国家集训队礼物(Lucas定理)
    【题解】佳佳的斐波那契数列(矩阵)
    【题解】Zap(莫比乌斯反演)
    HNOI2019爆零记
    Emacs配置
    【题解】Journeys(线段树优化连边)
    一直没有敢发的NOIP2018游记
    【题解】Digit Tree
    【题解】BZOJ3489 A Hard RMQ problem(主席树套主席树)
    【题解】大括号
  • 原文地址:https://www.cnblogs.com/Dr-wei/p/11841038.html
Copyright © 2020-2023  润新知