Xadmin 使用教程

前言:

直接替代 Django 自带的站点管理(admin),并带来了很多实用的东西,完全可扩展的插件支持,基于 Twitter Bootstrap 的漂亮 UI。
Python 版本:3.6.8
django-import-export 版本:1.2.0
Xadmin 版本:0.6.1

  • 完全替代 Django admin
  • 支持基于 Twitter Bootstrap 的 UI 主题
  • 支持可扩展的插件
  • 更好的过滤器,日期范围,数量范围等
  • 内置 xls,csv,xml 和 json 格式数据导出
  • 具有窗口小部件支持的仪表板页面
  • 现场书签
  • 完整的 CRUD 方法
  • 最好通过 PyPI 安装 Xadmin。要安装最新版本,请运行:

    1
    pip install xadmin
  • 或从 github 来源安装:(如果第一种方式安装失败,建议使用该方法安装)

    1
    pip install git+git://github.com/sshwsfc/xadmin.git
  • 从 Django 2.0 的 github 源安装:

    1
    pip install git+git://github.com/sshwsfc/xadmin.git@django2
  • 注意事项:

    1. 如果第一种方式安装失败则尝试第二种方式(如果第一种方式已安装 xadmin 记得先卸载再尝试第二种方式)
    2. 如果使用第二种方式安装出现 django-import-export 版本错误,则卸载掉已安装的 django-import-exportxadmin,然后去 django-import-export官网查看适合自己的版本再单独安装 django-import-export,最后再使用第二种方法安装 Xadmin
    3. 通过 githup 上搜索 xadmin,直接下载源码包,只需把下载文件中的 xadmin 文件夹拷贝到项目根目录配置便可以使用,当然得把 pip 安装得 xadmin 卸载后使用的才是导入的源码包 pip uninstall xadmin(推荐,当 xadmin 的新功能还没有发布到 pypi 上时,可以优先使用,当然,最主要的是我们可以查看源码,更加容易理解 xadmin 的功能,并在不断学习中进步)
  1. 激活应用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myApp.apps.MyappConfig',
    'xadmin',
    'crispy_forms',
    'reversion',
    ]
  2. 主路由配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    from django.conf.urls import url, include
    from django.contrib import admin
    import xadmin

    urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^xadmin/', xadmin.site.urls),
    url(r'^', include('myApp.urls', namespace='sunck')),
    ]
  3. 迁移文件

    1
    2
    python manage.py makemigrations
    python manage.py migrate
  4. 创建管理员用户

    1
    python manage.py createsuperuser

    按顺序输入用户名、邮箱、密码

  5. 登录

    • 启动服务

      1
      python manage.py runserver
    • 在浏览器地址栏输入

      1
      http://127.0.0.1:8000/admin
    • 输入账号和密码登录

  6. 配置中文显示

    1
    2
    3
    LANGUAGE_CODE = 'zh-Hans'

    TIME_ZONE = 'Asia/Shanghai'

    修改 settings.py 文件

  7. 管理表数据

    • 将要管理的表添加到应用目录下的 admin.py 文件中进行注册

      1
      2
      3
      4
      5
      6
      7
      import xadmin
      # 引入要管理的模型类
      from myApp.models import Student, Grade

      # Register your models here.
      xadmin.site.register(Student)
      xadmin.site.register(Grade)
  8. 自定义管理界面

    • 属性说明

      • list_display:显示字段,可以点击进行排序,属性排列顺序
      • list_filter:过滤字段,过滤框出现在页面右侧
      • search_fields:搜索字段,搜索框会出现在列表上方
      • list_per_page:分页显示,确定每页有多少条数据
      • actions_on_top:执行动作框是否显示在上方
      • actions_on_bottom:执行动作框是否显示在下方
      • model_icon:相应表图标配置,https://fontawesome.com/icons
      • show_detail_fields:显示详情
      • refresh_times:数据刷新时间
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        # Register your models here.
        class StudentAdmin(object):
        # 列表页属性
        list_display = ['pk', 'name', 'age', 'sex', 'grade', 'content', 'isDelete']
        list_filter = ["grade", "age"]
        search_fields = ["name"]
        list_per_page = 10

        # 相应表图标配置
        # https://fontawesome.com/icons
        model_icon = 'fa fa-address-book'
        # 显示详情
        show_detail_fields = ['name']
        # 数据刷新时间
        refresh_times = (3, 5)

        # 执行动作框的位置
        actions_on_top = False
        actions_on_bottom = True


        xadmin.site.register(Student, StudentAdmin)
    • 全局设置

      • site_title:后台名称(左上角名称)
      • site_footer:页脚设置
      • menu_style:左侧栏折叠样式
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        class GlobalSetting(object):
        # 页头
        site_title = '学生班级管理系统'
        # 页脚
        site_footer = 'By苏寅'
        # 左侧栏折叠样式
        menu_style = 'accordion'
        # 设置models的全局图标


        xadmin.site.register(views.BaseAdminView, BaseSetting)
    • 主题配置

      • 注册与表注册不同,需要将类和 views.BaseAdminView 绑定,且顺序与表相反

        1
        2
        3
        4
        5
        6
        7
        8
        9
        class BaseSetting(object):
        '''
        主题样式多样化
        '''
        enable_themes = True
        use_bootswatch = True


        xadmin.site.register(views.BaseAdminView, BaseSetting)
    • 表名设置

      • 注册在后台的表名为 verbose_name(数据只有一条,即单数),否则为 verbose_name_plural(数据大于一条,即为复数),若为指明 verbose_name_plural,则复数形式默认在单数形式后面在 s(学校 s),进入详情页的标签则为 models 中的 verbose_name

      • models 中重载__str__() 函数返回的值是在每张表详情列表页的展示的标签名,可以在显示列中指定

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        class Grade(models.Model):
        name = models.CharField(max_length=20)
        boyNum = models.IntegerField()
        girlNum = models.IntegerField()
        isDelete = models.BooleanField(default=False)

        def __str__(self):
        return self.name

        class Meta:
        db_table = "grades"
        verbose_name = '班级'
        verbose_name_plural = verbose_name

        models.py

    • app 名称设置

      • 只需修改每个 app 下的 apps.py 文件,在 config 类中加上 verbose_name=xxx,然后在对应__init__.py 文件中加上 default_app_config='对应config路径'

        1
        2
        3
        4
        5
        6
        from django.apps import AppConfig


        class MyappConfig(AppConfig):
        name = 'myApp'
        verbose_name = '学生管理'

        应用目录下的 apps.py

        1
        default_app_config = 'myApp.apps.MyappConfig'

        应用目录下的__init__.py

  9. 配置示例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    import xadmin
    # 引入要管理的模型类
    from myApp.models import Student, Grade
    from xadmin import views


    # Register your models here.
    class StudentAdmin(object):
    # 列表页属性
    list_display = ['pk', 'name', 'age', 'sex', 'grade', 'content', 'isDelete']
    list_filter = ["grade", "age"]
    search_fields = ["name"]
    list_per_page = 10

    # 相应表图标配置
    # https://fontawesome.com/icons
    model_icon = 'fa fa-address-book'
    # 显示详情
    show_detail_fields = ['name']
    # 数据刷新时间
    refresh_times = (3, 5)

    # 执行动作框的位置
    actions_on_top = False
    actions_on_bottom = True


    class GradeAdmin(object):
    list_display = ["pk", "name", "boyNum", "girlNum", "isDelete"]
    list_filter = ["name"]
    search_fields = ["name"]
    list_per_page = 10


    class BaseSetting(object):
    '''
    主题样式多样化
    '''
    enable_themes = True
    use_bootswatch = True


    # 设置全局图标
    # http://v3.bootcss.com/components/
    # http://www.yeahzan.com/fa/facss.html
    class GlobalSetting(object):
    # 页头
    site_title = '学生班级管理系统'
    # 页脚
    site_footer = 'By苏寅'
    # 左侧栏折叠样式
    # menu_style = 'accordion'


    xadmin.site.register(Student, StudentAdmin)
    xadmin.site.register(Grade, GradeAdmin)

    xadmin.site.register(views.BaseAdminView, BaseSetting)
    xadmin.site.register(views.CommAdminView, GlobalSetting)
------------- 本文结束 感谢您的阅读 -------------
正在加载今日诗词....