文章目录

  • 1 配置xadmin
  • 2 注入数据表
  • 3 配置后台管理系统样式


1 配置xadmin

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

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

  1. 在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
  1. 安装xadmin的依赖
pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
  1. 生成数据表
makemigrations

migrate
  1. 配置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)  # 注册数据表
  1. 修改在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)