【Django】使用xadmin构建后台管理系统

1 配置xadmin

  1. 在github搜索xadmin并下载源码

    由于xadmin报错实在是太多了,我前前后后改了三十多个报错,查阅了数百篇博客以及文献。为了以后不去重复处理报错,我fork了原来的xadmin项目,新建了自己的xadmin版本:MyXadmin,因此我建议你使用该仓库的xadmin版本。

  2. 在setting的INSTALLED_APPS中添加crispy_forms、xadmin、reversion、crispy_bootstrap3和django.conf,并配置语言和时区。

    这里之所以要添加crispy_bootstrap3和django.conf配置,是为了避免之后的报错。

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'apps.users.apps.UsersConfig',
        'apps.courses.apps.CoursesConfig',
        'apps.operations.apps.OperationsConfig',
        'apps.organizations.apps.OrganizationsConfig',
        'crispy_forms',
        'xadmin.apps.XAdminConfig',
        'reversion',
        'crispy_bootstrap3',
        'django.conf',
    ]
    CRISPY_TEMPLATE_PACK = 'bootstrap3'
    
    LANGUAGE_CODE = 'zh-hans'  # 配置显示为中文
    
    TIME_ZONE = 'Asia/Shanghai'  # 配置时区
    USE_TZ = False
    
  3. 安装xadmin的依赖

    pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
    
  4. 生成数据表

    makemigrations
    
    migrate
    
  5. 配置urls.py

    使用xadmin替代admin构建后台管理系统。

    from django.contrib import admin
    from xadmin.plugins import xversion
    from django.urls import path
    import xadmin
    xversion.register_models()
    xadmin.autodiscover()
    urlpatterns = [
        # path('admin/', admin.site.urls),
        path('xadmin/', xadmin.site.urls),
    ]
    

2 注入数据表

  1. 在app目录下新建adminx.py文件,并编辑如下:

    import xadmin
    from apps.courses.models import City
    
    
    class CourseAdmin(object):
        """
        为每个需要注入的数据表创建Admin函数
        """
        list_display = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students']  # 定义列表页显示的字段
        search_fields = ['name', 'desc', 'detail', 'degree', 'students']  # 定义搜索的字段
        list_filter = ['name', 'teacher__name', 'desc', 'detail', 'degree', 'learn_times', 'students']  # 定义过滤器字段('外键__外键属性':这种格式可以直接定位到外键属性)
        list_editable = ["degree", "desc"]  # 定义允许在列表中直接编辑的字段
    
    xadmin.site.register(Course, CourseAdmin)  # 注册数据表
    
  2. 修改在xadmin网页中显示的该app名称(编辑app目录下的apps.py)

    from django.apps import AppConfig
    
    
    class CoursesConfig(AppConfig):
        name = 'apps.courses'
        verbose_name = "课程管理"  # 别称
    

3 配置后台管理系统样式

class GlobalSettings(object):
    site_title = "CW后台管理系统"  # 定义后台系统主题名称
    site_footer = "CW网站页脚"  # 定义后台系统网站页脚
    menu_style = "accordion"  # 左侧导航栏收起

class BaseSettings(object):
    enable_themes = True  # 允许更换主题皮肤配置
    use_bootswatch = True
    
xadmin.site.register(xadmin.views.CommAdminView, GlobalSettings)
xadmin.site.register(xadmin.views.BaseAdminView, BaseSettings)
posted @ 2023-06-14 12:16  ccql  阅读(51)  评论(0编辑  收藏  举报  来源