当前位置: 移动技术网 > IT编程>脚本编程>Python > (项目)在线教育平台(二)

(项目)在线教育平台(二)

2018年11月15日  | 移动技术网IT编程  | 我要评论

soso地图离线包,恶魔突袭者,手机游戏模拟器

四、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'

  然后依次修改其他模块中的内容,最后修改完,界面显示如下:

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网