在之前我们已经把项目所需的基本配置,已配置,接下来是此项目的重点配置(xadmin),我们将用xadmin,实现快速搭建后台管理系统
首先是xadmin的安装,github下载
xadmin下载链接地址
在进入这链接后,找到此项目的xadmin,给他下载下来,CV到自己的项目中
在此如图,图中有些是咱们还没提到的目录,但不妨碍,你可以提前新建起来
接下来是xadmin的设置,进入settings文件
注册app,把下面两个app注册到settings.py的INSTALLED_APPS中
'xadmin',
'crispy_forms'
配置路由,进入urls文件
import xadmin
urlpatterns = [
path('xadmin/', xadmin.site.urls),
]
迁移数据库
makemigrations
migrate
创建一个管理员用户(tool—>manage.py)
createsuperuser
最后运行项目,在浏览器查看效果(访问后台:http://127.0.0.1:8888/xadmin)
开始配置xadmin后台管理系统
首先给各个app,进行后台models注册,在每个app下新建一个adminx.py
# users/adminx.py
import xadmin
from xadmin import views
from .models import EmailVerifyRecord, Banner
# 创建xadmin的最基本管理器配置,并与view绑定
class BaseSetting(object):
# 开启主题功能
enable_themes = True
use_bootswatch = True
# 全局修改,固定写法
class GlobalSettings(object):
# 修改title
site_title = '慕学后台管理界面'
# 修改footer
site_footer = 'BLACK的公司'
# 收起菜单
menu_style = 'accordion'
# xadmin中这里是继承object,不再是继承admin
class EmailVerifyRecordAdmin(object):
# 显示的列
list_display = ['code', 'email', 'send_type', 'send_time']
# 搜索的字段
search_fields = ['code', 'email', 'send_type']
# 过滤
list_filter = ['code', 'email', 'send_type', 'send_time']
class BannerAdmin(object):
list_display = ['title', 'image', 'url', 'index', 'add_time']
search_fields = ['title', 'image', 'url', 'index']
list_filter = ['title', 'image', 'url', 'index', 'add_time']
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
xadmin.site.register(Banner, BannerAdmin)
# 将基本配置管理与view绑定
xadmin.site.register(views.BaseAdminView, BaseSetting)
# 将title和footer信息进行注册
xadmin.site.register(views.CommAdminView,GlobalSettings)
# organization/adminx.py
import xadmin
from .models import CityDict, CourseOrg, Teacher
class CityDictAdmin(object):
'''城市'''
list_display = ['name', 'desc', 'add_time']
search_fields = ['name', 'desc']
list_filter = ['name', 'desc', 'add_time']
class CourseOrgAdmin(object):
'''机构'''
list_display = ['name', 'desc', 'click_nums', 'fav_nums','add_time' ]
search_fields = ['name', 'desc', 'click_nums', 'fav_nums']
list_filter = ['name', 'desc', 'click_nums', 'fav_nums','city__name','address','add_time']
class TeacherAdmin(object):
'''老师'''
list_display = [ 'name','org', 'work_years', 'work_company','add_time']
search_fields = ['org', 'name', 'work_years', 'work_company']
list_filter = ['org__name', 'name', 'work_years', 'work_company','click_nums', 'fav_nums', 'add_time']
xadmin.site.register(CityDict, CityDictAdmin)
xadmin.site.register(CourseOrg, CourseOrgAdmin)
xadmin.site.register(Teacher, TeacherAdmin)
# operation/adminx.py
import xadmin
from .models import UserAsk, UserCourse, UserMessage, CourseComments, UserFavorite
class UserAskAdmin(object):
'''用户表单我要学习'''
list_display = ['name', 'mobile', 'course_name', 'add_time']
search_fields = ['name', 'mobile', 'course_name']
list_filter = ['name', 'mobile', 'course_name', 'add_time']
#
class UserCourseAdmin(object):
'''用户课程学习'''
list_display = ['user', 'course', 'add_time']
search_fields = ['user', 'course']
list_filter = ['user', 'course', 'add_time']
class UserMessageAdmin(object):
'''用户消息后台'''
list_display = ['user', 'message', 'has_read', 'add_time']
search_fields = ['user', 'message', 'has_read']
list_filter = ['user', 'message', 'has_read', 'add_time']
class CourseCommentsAdmin(object):
'''用户评论后台'''
list_display = ['user', 'course', 'comments', 'add_time']
search_fields = ['user', 'course', 'comments']
list_filter = ['user', 'course', 'comments', 'add_time']
class UserFavoriteAdmin(object):
'''用户收藏后台'''
list_display = ['user', 'fav_id', 'fav_type', 'add_time']
search_fields = ['user', 'fav_id', 'fav_type']
list_filter = ['user', 'fav_id', 'fav_type', 'add_time']
# 将后台管理器与models进行关联注册。
xadmin.site.register(UserAsk, UserAskAdmin)
xadmin.site.register(UserCourse, UserCourseAdmin)
xadmin.site.register(UserMessage, UserMessageAdmin)
xadmin.site.register(CourseComments, CourseCommentsAdmin)
xadmin.site.register(UserFavorite, UserFavoriteAdmin)
# course/adminx.py
import xadmin
from .models import Course, Lesson, Video, CourseResource
# Course的admin管理器
class CourseAdmin(object):
'''课程'''
list_display = [ 'name','desc','detail','degree','learn_times','students']
search_fields = ['name', 'desc', 'detail', 'degree', 'students']
list_filter = [ 'name','desc','detail','degree','learn_times','students']
class LessonAdmin(object):
'''章节'''
list_display = ['course', 'name', 'add_time']
search_fields = ['course', 'name']
#这里course__name是根据课程名称过滤
list_filter = ['course__name', 'name', 'add_time']
class VideoAdmin(object):
'''视频'''
list_display = ['lesson', 'name', 'add_time']
search_fields = ['lesson', 'name']
list_filter = ['lesson', 'name', 'add_time']
class CourseResourceAdmin(object):
'''课程资源'''
list_display = ['course', 'name', 'download', 'add_time']
search_fields = ['course', 'name', 'download']
list_filter = ['course__name', 'name', 'download', 'add_time']
# 将管理器与model进行注册关联
xadmin.site.register(Course, CourseAdmin)
xadmin.site.register(Lesson, LessonAdmin)
xadmin.site.register(Video, VideoAdmin)
xadmin.site.register(CourseResource, CourseResourceAdmin)
运行项目,查看效果