• django+xadmin 在线教育网站(二)


    在之前我们已经把项目所需的基本配置,已配置,接下来是此项目的重点配置(xadmin),我们将用xadmin,实现快速搭建后台管理系统

    首先是xadmin的安装,github下载
    xadmin下载链接地址
    在进入这链接后,找到此项目的xadmin,给他下载下来,CV到自己的项目中
    在这里插入图片描述

    在此如图,图中有些是咱们还没提到的目录,但不妨碍,你可以提前新建起来

    接下来是xadmin的设置,进入settings文件
    注册app,把下面两个app注册到settings.py的INSTALLED_APPS中

    'xadmin',
    'crispy_forms'
    
    • 1
    • 2

    配置路由,进入urls文件

    import xadmin
    
    urlpatterns = [
        path('xadmin/', xadmin.site.urls),
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    迁移数据库

    makemigrations
    
    migrate
    
    • 1
    • 2
    • 3

    创建一个管理员用户(tool—>manage.py)

    createsuperuser
    
    • 1

    最后运行项目,在浏览器查看效果(访问后台: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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    # 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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    # 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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    # 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)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    运行项目,查看效果
    在这里插入图片描述

  • 相关阅读:
    【网络安全 ---- 靶场搭建】凡诺企业网站管理系统靶场详细搭建过程(asp网站,练习Access数据库的 sql注入)
    centos7.6 安装 rlwrap-0.45报 Requires: /usr/bin/python3
    python+vue+elementui知识共享网站
    [附源码]java毕业设计宿舍管理系统
    OpenCV快速入门:绘制图形、图像金字塔和感兴趣区域
    RocketMQ——MQ基础知识
    Web消息推送之SSE
    53. 寻宝(第七期模拟笔试)(最小生成树练习)
    Python语法--函数、全局/局部变量
    23届前端面试选择题(长期更新)
  • 原文地址:https://blog.csdn.net/Y57657/article/details/127652515