基于xadmin的后台管理

先使用pip进行安装xadmin及其依赖包

  1. pip install django-adminx

安装完成后卸载xadmin,保留依赖包即可

  1. pip uninstall django-adminx

需要对源码进行修改,将xadmin的源码下载下来

  1. https://github.com/sshwsfc/xadmin/tree/django2

在项目根目录新建Python Package "extra_apps",把源码xadmin文件夹放到extra_apps文件夹下面,此时目录结构如下:

extra_apps加入系统路径

  1. # settings.py
  2. sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))

配置路由

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

将xadmin添加到INSTALLED_APPS

  1. 'xadmin',
  2. 'crispy_forms',

数据库映射

  1. python manage.py makemigrations
  2. python manage.py migrate

创建管理员

  1. python manage.py createsuperuser

运行,打开http://127.0.0.1:8000/admin进行访问

输入刚才创建的账号和密码即可进入后台管理系统


后台完善

在创建的四个app目录下新建adminx.py的文件,里面存放后台管理的一些东西,和admin.py中的写法类似,作用一样

course/adminx.py

  1. # course/adminx.py
  2. import xadmin
  3. from .models import Course, Lesson, Video, CourseResource
  4. # Course的admin管理器
  5. class CourseAdmin(object):
  6. '''课程'''
  7. list_display = [ 'name','desc','detail','degree','learn_times','students']
  8. search_fields = ['name', 'desc', 'detail', 'degree', 'students']
  9. list_filter = [ 'name','desc','detail','degree','learn_times','students']
  10. class LessonAdmin(object):
  11. '''章节'''
  12. list_display = ['course', 'name', 'add_time']
  13. search_fields = ['course', 'name']
  14. #这里course__name是根据课程名称过滤
  15. list_filter = ['course__name', 'name', 'add_time']
  16. class VideoAdmin(object):
  17. '''视频'''
  18. list_display = ['lesson', 'name', 'add_time']
  19. search_fields = ['lesson', 'name']
  20. list_filter = ['lesson', 'name', 'add_time']
  21. class CourseResourceAdmin(object):
  22. '''课程资源'''
  23. list_display = ['course', 'name', 'download', 'add_time']
  24. search_fields = ['course', 'name', 'download']
  25. list_filter = ['course__name', 'name', 'download', 'add_time']
  26. # 将管理器与model进行注册关联
  27. xadmin.site.register(Course, CourseAdmin)
  28. xadmin.site.register(Lesson, LessonAdmin)
  29. xadmin.site.register(Video, VideoAdmin)
  30. xadmin.site.register(CourseResource, CourseResourceAdmin)

operation/adminx.py

  1. # operation/adminx.py
  2. import xadmin
  3. from .models import UserAsk, UserCourse, UserMessage, CourseComments, UserFavorite
  4. class UserAskAdmin(object):
  5. '''用户表单我要学习'''
  6. list_display = ['name', 'mobile', 'course_name', 'add_time']
  7. search_fields = ['name', 'mobile', 'course_name']
  8. list_filter = ['name', 'mobile', 'course_name', 'add_time']
  9. class UserCourseAdmin(object):
  10. '''用户课程学习'''
  11. list_display = ['user', 'course', 'add_time']
  12. search_fields = ['user', 'course']
  13. list_filter = ['user', 'course', 'add_time']
  14. class UserMessageAdmin(object):
  15. '''用户消息后台'''
  16. list_display = ['user', 'message', 'has_read', 'add_time']
  17. search_fields = ['user', 'message', 'has_read']
  18. list_filter = ['user', 'message', 'has_read', 'add_time']
  19. class CourseCommentsAdmin(object):
  20. '''用户评论后台'''
  21. list_display = ['user', 'course', 'comments', 'add_time']
  22. search_fields = ['user', 'course', 'comments']
  23. list_filter = ['user', 'course', 'comments', 'add_time']
  24. class UserFavoriteAdmin(object):
  25. '''用户收藏后台'''
  26. list_display = ['user', 'fav_id', 'fav_type', 'add_time']
  27. search_fields = ['user', 'fav_id', 'fav_type']
  28. list_filter = ['user', 'fav_id', 'fav_type', 'add_time']
  29. # 将后台管理器与models进行关联注册。
  30. xadmin.site.register(UserAsk, UserAskAdmin)
  31. xadmin.site.register(UserCourse, UserCourseAdmin)
  32. xadmin.site.register(UserMessage, UserMessageAdmin)
  33. xadmin.site.register(CourseComments, CourseCommentsAdmin)
  34. xadmin.site.register(UserFavorite, UserFavoriteAdmin)

organization/adminx.py

  1. # organization/adminx.py
  2. import xadmin
  3. from .models import CityDict, CourseOrg, Teacher
  4. class CityDictAdmin(object):
  5. '''城市'''
  6. list_display = ['name', 'desc', 'add_time']
  7. search_fields = ['name', 'desc']
  8. list_filter = ['name', 'desc', 'add_time']
  9. class CourseOrgAdmin(object):
  10. '''机构'''
  11. list_display = ['name', 'desc', 'click_nums', 'fav_nums','add_time' ]
  12. search_fields = ['name', 'desc', 'click_nums', 'fav_nums']
  13. list_filter = ['name', 'desc', 'click_nums', 'fav_nums','city__name','address','add_time']
  14. class TeacherAdmin(object):
  15. '''老师'''
  16. list_display = [ 'name','org', 'work_years', 'work_company','add_time']
  17. search_fields = ['org', 'name', 'work_years', 'work_company']
  18. list_filter = ['org__name', 'name', 'work_years', 'work_company','click_nums', 'fav_nums', 'add_time']
  19. xadmin.site.register(CityDict, CityDictAdmin)
  20. xadmin.site.register(CourseOrg, CourseOrgAdmin)
  21. xadmin.site.register(Teacher, TeacherAdmin)

users/adminx.py

  1. # users/adminx.py
  2. import xadmin
  3. from .models import EmailVerifyRecord,Banner
  4. #xadmin中这里是继承object,不再是继承admin
  5. class EmailVerifyRecordAdmin(object):
  6. # 显示的列
  7. list_display = ['code', 'email', 'send_type', 'send_time']
  8. # 搜索的字段
  9. search_fields = ['code', 'email', 'send_type']
  10. # 过滤
  11. list_filter = ['code', 'email', 'send_type', 'send_time']
  12. class BannerAdmin(object):
  13. list_display = ['title', 'image', 'url','index', 'add_time']
  14. search_fields = ['title', 'image', 'url','index']
  15. list_filter = ['title', 'image', 'url','index', 'add_time']
  16. xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
  17. xadmin.site.register(Banner,BannerAdmin)

xadmin导出csv乱码

将UTF-8改成gbk即可(xadmin/plugins/export.py)


xadmin全局配置

把全站的配置放在users\adminx.py

  1. from xadmin import views
  2. # 创建X admin的全局管理器并与view绑定。
  3. class BaseSetting(object):
  4. # 开启主题功能
  5. enable_themes = True
  6. use_bootswatch = True
  7. # 将全局配置管理与view绑定注册
  8. xadmin.site.register(views.BaseAdminView, BaseSetting)
  1. # x admin 全局配置参数信息设置
  2. class GlobalSettings(object):
  3. site_title = "慕课后台管理站"
  4. site_footer = "imooc"
  5. # 收起菜单
  6. menu_style = "accordion"
  7. # 将头部与脚部信息进行注册:
  8. xadmin.site.register(views.CommAdminView, GlobalSettings)

左侧菜单英文变中文

修改每个apps.py文件

  1. # users/apps.py
  2. from django.apps import AppConfig
  3. class UsersConfig(AppConfig):
  4. name = 'users'
  5. verbose_name = '用户信息'

修改__init__.py文件

  1. default_app_config = 'users.apps.UsersConfig'

将其他三个也进行修改

效果

自定义菜单顺序

  1. # x admin 全局配置参数信息设置
  2. class GlobalSettings(object):
  3. site_title = "慕课后台管理站"
  4. site_footer = "imooc"
  5. # 收起菜单
  6. menu_style = "accordion"
  7. def get_site_menu(self):
  8. return (
  9. {'title': '课程管理', 'menus': (
  10. {'title': '课程信息', 'url': self.get_model_url(Course, 'changelist')},
  11. {'title': '章节信息', 'url': self.get_model_url(Lesson, 'changelist')},
  12. {'title': '视频信息', 'url': self.get_model_url(Video, 'changelist')},
  13. {'title': '课程资源', 'url': self.get_model_url(CourseResource, 'changelist')},
  14. {'title': '课程评论', 'url': self.get_model_url(CourseComments, 'changelist')},
  15. )},
  16. {'title': '机构管理', 'menus': (
  17. {'title': '所在城市', 'url': self.get_model_url(CityDict, 'changelist')},
  18. {'title': '机构讲师', 'url': self.get_model_url(Teacher, 'changelist')},
  19. {'title': '机构信息', 'url': self.get_model_url(CourseOrg, 'changelist')},
  20. )},
  21. {'title': '用户管理', 'menus': (
  22. {'title': '用户信息', 'url': self.get_model_url(UserProfile, 'changelist')},
  23. {'title': '用户验证', 'url': self.get_model_url(EmailVerifyRecord, 'changelist')},
  24. {'title': '用户课程', 'url': self.get_model_url(UserCourse, 'changelist')},
  25. {'title': '用户收藏', 'url': self.get_model_url(UserFavorite, 'changelist')},
  26. {'title': '用户消息', 'url': self.get_model_url(UserMessage, 'changelist')},
  27. )},
  28. {'title': '系统管理', 'menus': (
  29. {'title': '用户咨询', 'url': self.get_model_url(UserAsk, 'changelist')},
  30. {'title': '首页轮播', 'url': self.get_model_url(Banner, 'changelist')},
  31. {'title': '用户分组', 'url': self.get_model_url(Group, 'changelist')},
  32. {'title': '用户权限', 'url': self.get_model_url(Permission, 'changelist')},
  33. {'title': '日志记录', 'url': self.get_model_url(Log, 'changelist')},
  34. )},)

Django+Xadmin打造在线教育系统(二)的更多相关文章

  1. Django+Xadmin打造在线教育系统(四)

    完成授课机构的功能 模板继承 在templates目录下,新建base.html,剪切org-list.html内容到里面 编写org-list.html内容 继承base.html,将里面的面包屑和 ...

  2. Django+Xadmin打造在线教育系统(三)

    完成登录 注册 找回密码 激活 验证码集成 将HTML文件拷贝到templates目录下,css,js,img,media,images文件夹拷贝到static文件夹下 修改index.html和lo ...

  3. Django+Xadmin打造在线教育系统(九)

    xadmin的进阶开发 因版本问题.有些配置可能无效 自定义icon xadmin的图标采用的是第三方css样式font awesome,我们可以进官网下载最新的样式替代原本的,下载地址:http:/ ...

  4. Django+Xadmin打造在线教育系统(七)

    全局导航&个人中心&全局搜索 配置全局导航 让index页面也继承base页面,注意首页有个单独的__index.js__ base页面的导航栏也进行配置 <nav> &l ...

  5. Django+Xadmin打造在线教育系统(一)

    系统概括: 系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心. 个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏.可以删除收藏,我的消息. 导航栏: 公开课,授课讲师 ...

  6. Django+Xadmin打造在线教育系统(八)

    首页和全局404,500配置 轮播图 公开课 授课机构 新建view ## 首页view class IndexView(View): def get(self,request): # 取出轮播图 a ...

  7. Django+Xadmin打造在线教育系统(五)

    课程相关功能实现 课程列表 创建课程相关的urls.py path("course/", include('course.urls', namespace="course ...

  8. Django+Xadmin打造在线教育系统(六)

    讲师相关功能实现 拷贝并修改teacher-list.html和teacher-detail.html, 继承base模板 # 讲师列表 path('teacher_list/', TeacherLi ...

  9. Django+xadmin打造在线教育平台(二)

    三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip ...

随机推荐

  1. Nginx监控运维

    Nginx是一个开源.免费.高性能的HTTP和反向代理服务器,也可以用于IMAP/POP3代理服务器.充分利用Nginx的特性,可以有效解决流量高并发请求.cc攻击等问题. 本文探讨了电商场景下Ngi ...

  2. H5 67-清除浮动方式三

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. H5 37-背景缩写

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. CentOS 6.5 手动rpm包安装gcc、g++

    摘自:https://blog.csdn.net/lichen_net/article/details/70211204 mount CentOS的安装光盘,然后先后安装 rpm -ivh ppl-0 ...

  5. NGINX Docs | Load Balancing Apache Tomcat Servers with NGINX Open Source and NGINX Plus

    NGINX Docs | Load Balancing Apache Tomcat Servers with NGINX Open Source and NGINX Plushttps://docs. ...

  6. vue组件star开发基于vue-cli

    <template> <div class="stars"> <div v-for="(item,ind) in num" :ke ...

  7. oracle查询不走索引的一些情况(索引失效)

    Oracle建立索引的目的是为了避免全表扫描,提高查询的效率. 但是有些情况下发现即使建立了索引,但是写出来的查询还是很慢,然后会发现是索引失效导致的,所以需要了解一下那些情况会导致索引失效,即查询不 ...

  8. Oracle Flashback 详解

    Oracle flashback 是一种方便快捷的数据库恢复技术,它不使用备份文件,通过闪回日志可以使数据库恢复到过去的某个状态,当用户发生逻辑错误时(误删表数据.表.表空间等)需要快速恢复数据库,可 ...

  9. 使用docker化的nginx 反向代理 docker化的GSCloud 的方法

    1. 首先将nginx 的image pull 下来. docker pull nginx 2. 将最近的可用的 参数文件 复制过来当一个目录 mkdir /nginx ssh root@linuxs ...

  10. 【学亮IT手记】Ajax跨域问题精讲--jQuery解决跨域操作

    什么是跨域 跨域,它是不同的域名(服务器)之间的相互的资源之间的访问. 当协议,域名,端口号任意一个不同,它们就是不同的域. 正常情况下,因为浏览器安全的问题,不同域之间的资源是不可以访问的. 跨域的 ...