前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础使用Django2.0.1打造在线教育网站(十):后台管理配置

零基础使用Django2.0.1打造在线教育网站(十):后台管理配置

原创
作者头像
啃饼思录
修改2018-09-10 21:27:39
9660
修改2018-09-10 21:27:39
举报

关于博主

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

代码语言:txt
复制
                 微信公众号:  啃饼思录
代码语言:txt
复制
                 QQ: 2810706745(啃饼小白)

写在前面

本篇笔记主要完善上篇笔记中遗留的其余3个apps的注册,还有xadmin的全局配置,让你打造一个属于自己的网站后台管理系统。

本篇笔记对应于第十篇代码,对应于github的位置是https://github.com/licheetools/eduline

其余3个apps的注册

courses的注册

我们打开eduline/apps/courses这个文件夹,在里面新建一个名为adminx.py的文件,我们准备开始进行app的注册,在其中添加如下代码:

代码语言:txt
复制
import xadmin

from .models import Course, Lesson, Video, CourseResource


class CourseAdmin(object):
    list_display = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', 'image', 'click_nums',
                    'add_time', 'get_zj_nums', 'go_to']  # 一次显示你想出现的多行数据
    search_fields = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', 'image',
                     'click_nums']  # 查询你想要的数据
    list_filter = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students', 'fav_nums', 'image', 'click_nums',
                   'add_time']  # 过滤器


class LessonAdmin(object):
    list_display = ['course', 'name', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['course', 'name']  # 查询你想要的数据
    list_filter = ['course__name', 'name', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


class VideosAdmin(object):
    list_display = ['lesson', 'name', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['lesson', 'name']  # 查询你想要的数据
    list_filter = ['lesson', 'name', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


class CourseResourceAdmin(object):
    list_display = ['course', 'name', 'download', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['course', 'name', 'download']  # 查询你想要的数据
    list_filter = ['course', 'name', 'download', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


xadmin.site.register(Course, CourseAdmin)
xadmin.site.register(Lesson, LessonAdmin)
xadmin.site.register(Video, VideosAdmin)
xadmin.site.register(CourseResource, CourseResourceAdmin)

运行一下你的项目,在浏览器地址栏中输入:

代码语言:txt
复制
http://127.0.0.1:8000/xadmin

,回车一下:

organization的注册

我们打开eduline/apps/organization这个文件夹,在里面新建一个名为adminx.py的文件,我们准备开始进行app的注册,在其中添加如下代码:

代码语言:txt
复制
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']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


class CourseOrgAdmin(object):
    list_display = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city']  # 查询你想要的数据,记住尽量不要把时间放进去
    list_filter = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


class TeacherAdmin(object):
    list_display = ['org','name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['org','name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums']  # 查询你想要的数据,记住尽量不要把时间放进去
    list_filter = ['org','name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


xadmin.site.register(CityDict, CityDictAdmin)
xadmin.site.register(CourseOrg, CourseOrgAdmin)
xadmin.site.register(Teacher, TeacherAdmin)

运行一下你的项目,在浏览器地址栏中输入:http://127.0.0.1:8000/xadmin,回车一下:

operation的注册

我们打开eduline/apps/operation这个文件夹,在里面新建一个名为adminx.py的文件,我们准备开始进行app的注册,在其中添加如下代码:

代码语言:txt
复制
import xadmin

from .models import UserAsk,CourseComments,UserFavorite,UserMessage,UserCourse


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']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


class CourseCommentsAdmin(object):
    list_display = ['user', 'course', 'comments', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['user', 'course', 'comments']  # 查询你想要的数据,记住尽量不要把时间放进去
    list_filter = ['user', 'course', 'comments', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


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']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


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']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


class UserCourseAdmin(object):
    list_display = ['user',  'course', 'add_time']  # 一次显示你想出现的多行数据
    search_fields = ['user',  'course']  # 查询你想要的数据,记住尽量不要把时间放进去
    list_filter = ['user',  'course', 'add_time']  # 过滤器,__name是外键的name字段,只写course则无法在过滤器中显示。


xadmin.site.register(UserAsk, UserAskAdmin)
xadmin.site.register(CourseComments, CourseCommentsAdmin)
xadmin.site.register(UserFavorite, UserFavoriteAdmin)
xadmin.site.register(UserMessage, UserMessageAdmin)
xadmin.site.register(UserCourse, UserCourseAdmin)

运行一下你的项目,在浏览器地址栏中输入:

代码语言:txt
复制
http://127.0.0.1:8000/xadmin

,回车一下:

至此,我们所有的apps都已经注册完了。接下来我们就开始定制属于自己的后台管理系统吧。

xadmin的全局配置

开启主题功能

打开users/adminx.py文件,在里面添加如下代码:

代码语言:txt
复制
from xadmin import views
# 创建xadmin的全局管理器并与view进行绑定
class BaseSetting(object):
    enable_themes = True  # 修改主题
    use_bootswatch = True    # 增加主题的可选内容

# 将全局配置管理与view进行绑定注册
xadmin.site.register(views.BaseAdminView, BaseSetting)

看到没,已经出现更换主题按钮了,你可以自定义喜欢的主题了:

后台管理名称配置

如图,我们需要修改站点标题,站点尾注,折叠菜单等以下内容:

为了更好地管理这些不变动的信息,我们依旧放在users/adminx.py文件里面。我们打开它,并在其中加入以下代码:

代码语言:txt
复制
class GlobalSettings(object):
    site_title = '慕学后台管理系统'  # 站点标题
    site_footer = '慕海学习网'   # 站点尾注
    menu_style = 'accordion'   # 折叠收起菜单
# 将站点标题与站点尾注进行注册:
xadmin.site.register(views.CommAdminView, GlobalSettings)

刷新一下我们的网页,就变成了这个样子:

不知你发现没有,还有一个问题就是折叠后apps还是显示英文:

我们想变成中文,可以吗?答案是当然可以的!

配置apps的后台显示

打开每个app下面的apps.py文件,追加verbose_name信息。我们以users/apps.py为例,修改为如下:

代码语言:txt
复制
from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '用户信息'

就是这个样子:

其余apps的apps.py文件修改如下:

courses/apps.py:

代码语言:txt
复制
from django.apps import AppConfig

class CoursesConfig(AppConfig):
    name = 'courses'
    verbose_name = '课程管理'

operation/apps.py:

代码语言:txt
复制
from django.apps import AppConfig

class OperationConfig(AppConfig):
    name = 'operation'
    verbose_name = '用户操作'

organization/apps.py:

代码语言:txt
复制
from django.apps import AppConfig

class OrganizationConfig(AppConfig):
    name = 'organization'
    verbose_name = '机构管理'

再来刷新一下我们的页面,我们发现页面还是老样子,并没有出现与我们设想的页面,那是因为我们还没有配置信息,我们需要在每个app应用的--init--.py文件里加上引用apps的配置信息,就一行代码:default_app_config = "appname.apps.AppnameConfig" # 注意第二个Appname首字母大写。我们设置如下:

users/--init--.py:为例,记住是箭头2不是箭头1(箭头1是apps这个文件的)!!!

添加如下一行代码:

代码语言:txt
复制
default_app_config = 'users.apps.UsersConfig'

courses/--init--.py:

代码语言:txt
复制
default_app_config = 'courses.apps.CoursesConfig'

operation/--init--.py:

代码语言:txt
复制
default_app_config = 'operation.apps.OperationConfig'

organization/--init--.py:

代码语言:txt
复制
default_app_config = 'organization.apps.OrganizationConfig'

现在我们刷新一下我们的页面,成功了:

自定义菜单显示顺序

上面菜单的显示是根据我们注册的时间来显示的,我们可以自定义我们的菜单显示顺序:在users/adminx.py文件加上以下代码:

代码语言:txt
复制
from users.models import EmailVerifyRecord, Banner, UserProfile
from courses.models import Course, CourseResource, Lesson, Video
from organization.models import CourseOrg, CityDict, Teacher
from operation.models import CourseComments, UserMessage, UserFavorite, UserCourse, UserAsk
from django.contrib.auth.models import Group, Permission
from xadmin.models import Log


class GlobalSettings(object):
    site_title = '慕学后台管理系统'
    site_footer = '慕海学习网'
    menu_style = 'accordion'

    def get_site_menu(self):
        return (
                {'title': '课程管理', 'menus': (
                    {'title': '课程信息', 'url': self.get_model_url(Course, 'changelist')},
                    {'title': '章节信息', 'url': self.get_model_url(Lesson, 'changelist')},
                    {'title': '视频信息', 'url': self.get_model_url(Video, 'changelist')},
                    {'title': '课程资源', 'url': self.get_model_url(CourseResource, 'changelist')},
                    {'title': '课程评论', 'url': self.get_model_url(CourseComments, 'changelist')},
                )},
                {'title': '机构管理', 'menus': (
                    {'title': '所在城市', 'url': self.get_model_url(CityDict, 'changelist')},
                    {'title': '机构讲师', 'url': self.get_model_url(Teacher, 'changelist')},
                    {'title': '机构信息', 'url': self.get_model_url(CourseOrg, 'changelist')},
                )},
                {'title': '用户管理', 'menus': (
                    {'title': '用户信息', 'url': self.get_model_url(UserProfile, 'changelist')},
                    {'title': '用户验证', 'url': self.get_model_url(EmailVerifyRecord, 'changelist')},
                    {'title': '用户课程', 'url': self.get_model_url(UserCourse, 'changelist')},
                    {'title': '用户收藏', 'url': self.get_model_url(UserFavorite, 'changelist')},
                    {'title': '用户消息', 'url': self.get_model_url(UserMessage, 'changelist')},
                )},

                {'title': '系统管理', 'menus': (
                    {'title': '用户咨询', 'url': self.get_model_url(UserAsk, 'changelist')},
                    {'title': '首页轮播', 'url': self.get_model_url(Banner, 'changelist')},
                    {'title': '用户分组', 'url': self.get_model_url(Group, 'changelist')},
                    {'title': '用户权限', 'url': self.get_model_url(Permission, 'changelist')},
                    {'title': '日志记录', 'url': self.get_model_url(Log, 'changelist')},
            )},)

xadmin.site.register(views.CommAdminView, GlobalSettings)

记住这段代码是和我们之前定义全局配置放在同一个函数里面的

注意:是from users.models import EmailVerifyRecord, Banner, UserProfile而不是:from apps.users.models import EmailVerifyRecord, Banner, UserProfile

代码语言:txt
复制
RuntimeError: Model class apps.users.models.UserProfile doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

也就是说直接from users.models,不用再写上from apps.users.models。

最后我们运行一下我们的项目,在浏览器地址栏中输入:

代码语言:txt
复制
http://127.0.0.1:8000/xadmin

,然后回车,就成了这个样子:

说明一下,这个日志记录就是用来记录我们之前进行过什么操作的文件。

你可能会问,这些apps的图片都是圆圈,我们可以自定义图标么?答案是当然了!

这里我就不介绍了,有兴趣的小伙伴们可以自己设置,这里我开启传送大门:xadmin管理员详情页面布局,导航图标设置

至此,我们自己专属的网站后台就搭建成功了,感谢你的赏阅!下一篇我们就正式进入到前端页面的配置了,主要解决用户注册,登录的问题。

本篇笔记对应于第十篇代码,对应于github的位置是https://github.com/licheetools/eduline

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于博主
  • 写在前面
  • 其余3个apps的注册
    • courses的注册
      • organization的注册
        • operation的注册
        • xadmin的全局配置
          • 开启主题功能
            • 后台管理名称配置
              • 配置apps的后台显示
                • 自定义菜单显示顺序
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档