(项目)在线教育平台(二)
四、xadmin后台管理系统
1、xadmin安装
首先在该网址下载xadmin的源码包:https://github.com/sshwsfc/xadmin/tree/django2
下载完成之后,将该安装包放在项目目录下进行安装:pip install xadmin-django2.zip
这时它会安装许多xadmin相关的依赖包,然后在项目根目录下新建包extra_apps,将下载好的xadmin源码解压,将里面的xadmin文件拷贝到该包下,我们是用源码安装的方式,需要将xadmin卸载:pip uninstall xadmin
我们使用的是源码的方式,需要将xadmin和crispy_forms配置进setting.py中的installed_apps中:
1 installed_apps = [ 2 'django.contrib.auth', 3 'django.contrib.contenttypes', 4 'django.contrib.sessions', 5 'django.contrib.messages', 6 'django.contrib.staticfiles', 7 'django.contrib.admin', 8 'users', 9 'course', 10 'organization', 11 'operation', 12 'xadmin', 13 'crispy_forms' 14 ]
将extra_apps包mark成source root,并在settings.py中进行配置:
1 import os 2 import sys 3 4 # build paths inside the project like this: os.path.join(base_dir, ...) 5 base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 6 sys.path.insert(0, os.path.join(base_dir, 'apps')) 7 sys.path.insert(0, os.path.join(base_dir, 'extra_apps'))
然后配置xadmin的路由,在mxonline/urls.py文件中配置路由:
1 import xadmin 2 3 urlpatterns = [ 4 path('xadmin/', xadmin.site.urls), 5 ]
然后就可以进行迁移数据库,生成xadmin后台管理所需的表,注意,如果提示runtimeerror,需要在installed_apps中配置django.contrib.admin。
现在就可以使用xadmin后台管理系统了,不过要先创建一个管理员用户,打开run manage.py task,运行createsuperuser创建管理员用户:
创建好之后就可以登录后台管理系统了:http://127.0.0.1:8000/xadmin/
右侧都是英文,我们需要设置成中文显示,在settings.py文件中进行配置:
1 language_code = 'zh-hans' 2 3 time_zone = 'asia/shanghai' 4 5 use_i18n = true 6 7 use_l10n = true 8 9 use_tz = false
2、models注册
现在需要将我们设计好的每个models中的表注册进后台管理系统中,以实现数据的增删改查。
2.1 user的model注册
在users下面创建adminx.py文件,在该文件下编写注册代码:
1 import xadmin 2 3 from users.models import emailverifyrecord, banner 4 5 6 class emailverifyrecordadmin(object): 7 # 显示的列 8 list_display = ['code', 'email', 'send_type', 'send_time'] 9 # 搜索的字段 10 search_fields = ['code', 'email', 'send_type'] 11 # 过滤 12 list_filter = ['code', 'email', 'send_type', 'send_time'] 13 14 xadmin.site.register(emailverifyrecord, emailverifyrecordadmin) 15 16 17 class banneradmin(object): 18 list_display = ['title', 'image', 'url','index', 'add_time'] 19 search_fields = ['title', 'image', 'url','index'] 20 list_filter = ['title', 'image', 'url','index', 'add_time'] 21 22 xadmin.site.register(banner, banneradmin)
刷新页面之后,左侧导航栏出现了邮箱验证码和轮播图的选项,还有自己设置的显示列表选项,筛选选项,搜索选项,界面显示如下:
2.2 course的model注册
在course下面创建adminx.py文件,在该文件下编写注册代码:
1 import xadmin 2 3 from .models import course, lesson, video, courseresourse 4 5 class courseadmin(object): 6 list_display = ['name','desc','detail','degree','learn_times','students'] 7 search_fields = ['name', 'desc', 'detail', 'degree', 'students'] 8 list_filter = ['name','desc','detail','degree','learn_times','students'] 9 10 xadmin.site.register(course, courseadmin) 11 12 13 class lessonadmin(object): 14 list_display = ['course', 'name', 'add_time'] 15 search_fields = ['course', 'name'] 16 # course__name是根据课程名称进行过滤 17 list_filter = ['course__name', 'name', 'add_time'] 18 19 xadmin.site.register(lesson, lessonadmin) 20 21 22 class videoadmin(object): 23 list_display = ['lesson', 'name', 'add_time'] 24 search_fields = ['lesson', 'name'] 25 list_filter = ['lesson', 'name', 'add_time'] 26 27 xadmin.site.register(video, videoadmin) 28 29 30 class courseresourseadmin(object): 31 list_display = ['course', 'name', 'download', 'add_time'] 32 search_fields = ['course', 'name', 'download'] 33 list_filter = ['course__name', 'name', 'download', 'add_time'] 34 35 xadmin.site.register(courseresourse, courseresourseadmin)
2.3 organization的model注册
在organization下面创建adminx.py文件,在该文件下编写注册代码:
1 import xadmin 2 3 from .models import citydict, courseorg, teacher 4 5 6 class citydictadmin(object): 7 list_display = ['name', 'desc', 'add_time'] 8 search_fields = ['name', 'desc'] 9 list_filter = ['name', 'desc', 'add_time'] 10 11 xadmin.site.register(citydict, citydictadmin) 12 13 14 class courseorgadmin(object): 15 list_display = ['name', 'desc', 'click_nums', 'fav_nums','add_time'] 16 search_fields = ['name', 'desc', 'click_nums', 'fav_nums'] 17 list_filter = ['name', 'desc', 'click_nums', 'fav_nums','city__name','address','add_time'] 18 19 xadmin.site.register(courseorg, courseorgadmin) 20 21 22 class teacheradmin(object): 23 list_display = ['name','org', 'work_years', 'work_company','add_time'] 24 search_fields = ['org', 'name', 'work_years', 'work_company'] 25 list_filter = ['org__name', 'name', 'work_years', 'work_company','click_nums', 'fav_nums', 'add_time'] 26 27 xadmin.site.register(teacher, teacheradmin)
2.4 operation的model注册
在operation下面创建adminx.py文件,在该文件下编写注册代码:
1 import xadmin 2 3 from .models import userask, usermessage, coursecomments, usercourse, userfavorite 4 5 6 class useraskadmin(object): 7 list_display = ['name', 'mobile', 'course_name', 'add_time'] 8 search_fields = ['name', 'mobile', 'course_name'] 9 list_filter = ['name', 'mobile', 'course_name', 'add_time'] 10 11 xadmin.site.register(userask, useraskadmin) 12 13 14 class usermessageadmin(object): 15 list_display = ['user', 'message', 'has_read', 'add_time'] 16 search_fields = ['user', 'message', 'has_read'] 17 list_filter = ['user', 'message', 'has_read', 'add_time'] 18 19 xadmin.site.register(usermessage, usermessageadmin) 20 21 22 class coursecommentsadmin(object): 23 list_display = ['user', 'course', 'comments', 'add_time'] 24 search_fields = ['user', 'course', 'comments'] 25 list_filter = ['user', 'course', 'comments', 'add_time'] 26 27 xadmin.site.register(coursecomments, coursecommentsadmin) 28 29 30 class usercourseadmin(object): 31 list_display = ['user', 'course', 'add_time'] 32 search_fields = ['user', 'course'] 33 list_filter = ['user', 'course', 'add_time'] 34 35 xadmin.site.register(usercourse, usercourseadmin) 36 37 38 class userfavoriteadmin(object): 39 list_display = ['user', 'fav_id', 'fav_type', 'add_time'] 40 search_fields = ['user', 'fav_id', 'fav_type'] 41 list_filter = ['user', 'fav_id', 'fav_type', 'add_time'] 42 43 xadmin.site.register(userfavorite, userfavoriteadmin)
至此,后台管理中所有的model注册完毕,界面显示如下:
3、xadmin的全局配置
修改左上角的显示标题,还有最底部的我的公司,主题功能,app名称汉化、左侧菜单收叠,这些修改的配置都写进users/adminx.py文件中:
3.1 主题功能
1 from xadmin import views 2 3 class basesetting(object): 4 """主题配置""" 5 enable_themes = true 6 use_bootswatch = true 7 8 xadmin.site.register(views.baseadminview, basesetting)
配置之后,后台管理界面的右上角出现了主题,可以进行主题更换:
3.2 logo、底部我的公司,菜单收叠
1 class globalsetting(object): 2 """ logo、底部我的公司,菜单收叠配置""" 3 # logo 4 site_title = '知能网在线教育后台管理' 5 # 我的公司 6 site_footer = '知能网' 7 # 菜单收叠 8 menu_style = 'accordion' 9 10 xadmin.site.register(views.commadminview, globalsetting)
刷新页面之后,修改的地方如下:
3.3 app名称汉化
修改每个模块中的app.py文件,以users/apps.py为例,在文件中添加verbose_name = '用户',修改内容如下:
1 from django.apps import appconfig 2 3 4 class usersconfig(appconfig): 5 name = 'users' 6 verbose_name = '用户管理'
然后在__init__.py文件中引用app.py文件中的配置:
1 default_app_config = 'users.apps.usersconfig'
然后依次修改其他模块中的内容,最后修改完,界面显示如下:
上一篇: asp两组字符串数据比较合并相同数据
下一篇: 反爬利器--设置代理服务器