zoukankan      html  css  js  c++  java
  • Xadmin使用

    Django项目中集成Xadmin作为项目的后台管理系统

    一、Xadmin安装

    • 通过如下命令安装xadmin的最新版,文档里面的安装方法好久没有更新了,会导致安装不成功,所以我们使用下面的网址进行安装
       pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2
    

    二、在项目配置文件中注册如下应用

       INSTALLED_APPS = [
       ...
       'xadmin',
       'crispy_forms',
       'reversion',
       ...
       ]
    
       # 修改配置使用中文界面
       LANGUAGE_CODE = 'zh-Hans'
    
       # 修改配置中的时区
       TIME_ZONE = 'Asia/Shanghai'
    

    三、xadmin需要建立自己的数据库模型类,故要进行数据库迁移

       python manage.py makemigrations
       python manage.py migrate
    

    四、在项目总路由urls.py文件中添加xadmin的路由信息

       import xadmin
       xadmin.autodiscover()
    
       # version模块自动注册需要版本控制的 Model
       from xadmin.plugins import xversion
       xversion.register_models()
    
       urlpatterns = [
           path(r'xadmin/', xadmin.site.urls),
       ]
    

    五、创建超级用户

       python manage.py createsuperuser
    

    六、使用

    • 每一个应用文件中(apps文件夹下的应用)都可以创建adminx.py对xadmin站点进行配置。

    • xadmin的站点管理类不用继承admin.ModelAdmin,而是直接继承object即可。

    例如:在子应用中创建adminx.py文件。

    任意子应用下的adminx.py文件中进行站点的全局配置
          
       import xadmin
       from xadmin import views
       from . import models
    
       class BaseSetting(object):
           """xadmin的基本配置"""
           enable_themes = True  # 开启主题切换功能
           use_bootswatch = True # 引导控制盘(其实就是我们的左侧菜单栏)
    
       xadmin.site.register(views.BaseAdminView, BaseSetting)
    
       class GlobalSettings(object):
           """xadmin的全局配置"""
           site_title = "众阅生活"  # 设置站点标题
           site_footer = "XXX有限公司"  # 设置站点的页脚
           menu_style = "accordion"  # 设置菜单折叠
    
       xadmin.site.register(views.CommAdminView, GlobalSettings)
    
    
       例如:对models.py中的订单记录模型类(Order)进行管理则进行如下操作
       class OrderModelAdmin(object):
           """
           订单记录管理类
           """
           pass
           注:可以对以下(站点Model管理)中的相关属性进行配置(字段名根据自己model类中的实际情况)
    
       xadmin.site.register(models.Order, OrderModelAdmin)
    

    站点Model管理

    • xadmin可以使用的页面样式控制基本与Django原生的admin一致。

    • 可以在models类中定义__str__方法来定义对象显示成什么内容

    • list_display 控制列表展示的字段

      list_display = ['id', 'btitle', 'bread', 'bcomment']
      
    • search_fields 控制可以通过搜索框搜索的字段名称,xadmin使用的是模糊查询

      search_fields = ['id','btitle']
      
    • list_filter 可以进行过滤操作的列,对于分类、性别、状态

      list_filter = ['is_delete']
      
    • ordering 默认排序的字段

      ordering = ['-age',]  #-倒序
      
    • show_detail_fields 在列表页提供快速显示详情信息

      show_detail_fields = ['id',]
      
    • list_editable 在列表页可以快速直接编辑的字段

      list_editable = ['name','age',]
      
    • refresh_times 指定列表页的定时刷新

      refresh_times = [5, 10,30,60]  # 设置允许后端管理人员按多长时间(秒)刷新页面,选好之后就能自动刷新了
      
      
    • list_export 控制列表页导出数据的可选格式

      list_export = ('xls', 'json','csv')#写元祖或者列表都行   list_export设置为None来禁用数据导出功能
      list_export_fields = ('id', 'btitle', 'bpub_date') #设置允许导出的字段
      
    • show_bookmarks 控制是否显示书签功能

      show_bookmarks = True #False就隐藏了这个功能
      
    • data_charts 控制显示图表的样式

      data_charts = {
              "order_amount": {  #随便写的名称order_amount
                'title': '图书发布日期表', 
                "x-field": "bpub_date", 
                "y-field": ('btitle',),
                "order": ('id',),
                
              },
          #    支持生成多个不同的图表
          #    "order_amount2": {
          #      'title': '图书发布日期表', 
          #      "x-field": "bpub_date", 
          #      "y-field": ('btitle',),
          #      "order": ('id',)
          #    },
          }
      
      • title 控制图标名称
      • x-field 控制x轴字段
      • y-field 控制y轴字段,可以是多个值
      • order 控制默认排序
    • model_icon 控制菜单的图标【图标的设置可以参考font-awesome的图标css名称】

      model_icon = 'fa fa-gift'
      
    • readonly_fields 在编辑页面的只读字段

      readonly_fields = ['name',]
      
    • exclude 在编辑页面隐藏的字段,比如判断这个数据是否删除的delete_status字段,一般就是用来标识一下字段是不是被删除了,但是数据库中不删除

      exclude = ['name',]
      
    • 这并不是所有功能,可以参看它的文档,它提供的一些功能我们可能还需要自定制,调整或者添加一些它没有的功能。

  • 相关阅读:
    Java后端面试题大汇总,冲刺金三银四
    面试官:小伙子,Mybatis的本质和原理说一下
    面试官问:大量的 TIME_WAIT 状态 TCP 连接,对业务有什么影响?怎么处理?
    便捷搭建 Zookeeper 服务器的方法,好用,收藏~
    10 个冷门但又非常实用的 Docker 使用技巧
    mitmproxy 抓包工具(1)
    基于alpine创建Scrapy镜像
    强大的输入框-应用快速启动uTools
    Interceptor、Filter、Servlet的区别
    利用三层判断sql数据库中编码是否已经存在(个人拙作,不喜勿喷)
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13123548.html
Copyright © 2011-2022 走看看