文章目录
- 1 配置xadmin
- 2 注入数据表
- 3 配置后台管理系统样式
1 配置xadmin
- 在github搜索xadmin并下载源码
由于xadmin报错实在是太多了,我前前后后改了三十多个报错,查阅了数百篇博客以及文献。为了以后不去重复处理报错,我fork了原来的xadmin项目,新建了自己的xadmin版本:MyXadmin,因此我建议你使用该仓库的xadmin版本。
- 在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
- 安装xadmin的依赖
pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt
- 生成数据表
makemigrations
migrate
- 配置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 注入数据表
- 在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) # 注册数据表
- 修改在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)