文章目录
- 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
-
生成数据表
makemigrationsmigrate
-
配置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 Cityclass 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 AppConfigclass 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 = Truexadmin.site.register(xadmin.views.CommAdminView, GlobalSettings)
xadmin.site.register(xadmin.views.BaseAdminView, BaseSettings)