后台管理系统

Django Admin 介绍

特点:权限管理、少前段样式、快速开发

Django具有杀手级自动化的后台管理系统,新建项目之后会自动新建APP为admin

建立后台管理系统的超级用户

#createsuperuser

setting配置

# 语言改为中文
LANGUAGE_CODE = 'zh-hans'

# 时区改为上海
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

# 数据库存储使用时间,True时间会被存为UTC的时间
USE_TZ = False

user/admin.py 注册定义的model,这样就可以在后台管理中看到(只需要几行代码,就可以注册到后台,非常方便)

# 因为同一个目录,所以可以直接.models
from .models import UserProfile


# 写一个管理器:命名, model+Admin
class UserProfileAdmin(admin.ModelAdmin):
    pass


# 将UserProfile注册进我们的admin中, 并为它选择管理器
admin.site.register(UserProfile,UserProfileAdmin)

安装Xadmin

# pip install xadmin

setting中注册Xadmin(依赖于crispy_forms,也要注册),配置url.py

import xadmin

url(r'^xadmin/', xadmin.site.urls)

生成xadmin的数据表 

# makemigrations
# migrate

以上为使用直接pip的xadmin, 接下来我们使用最新的源码安装xadmin, 这样可以使用xadmin新发布的一些功能, 而且也可以对源码进行修改。在github上面下载xadmin的源码, uninstall 之前安装xadmin

Xadmin的使用

在user下新建xadmin.py文件,注册user中类的信息,使得model中定义的数据表可以在xadmin后台显示

import xadmin
from .models import EmailVerifyRecord

# 创建admin的管理类,这里不再是继承admin,而是继承object
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']
    model_icon = 'fa fa-envelope'


# 将model与admin管理器进行关联注册
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)

setting.py 中添加xadmin的根目录,保证源码安装的xadmin可以进行migrate

sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))

将其他的model在xadmin中注册:轮播图

# 创建banner的管理类
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']
    model_icon = 'fa fa-group'

xadmin.site.register(Banner, BannerAdmin)

剩余app的注册

这一节多为复制粘贴工作,原理同上一节末尾,将每一个APP的model信息注册即可

courses/xadmin.py

from .models import Course, Lesson, Video, CourseResource, BannerCourse
import xadmin

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']
    # __name代表使用外键中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']
    # __name代表使用外键中name字段
    list_filter = ['course__name', 'name', 'download', 'add_time']


# 将管理器与model进行注册关联
xadmin.site.register(BannerCourse, BannerCourseAdmin)
xadmin.site.register(Course, CourseAdmin)
xadmin.site.register(Lesson, LessonAdmin)
xadmin.site.register(Video, VideoAdmin)
xadmin.site.register(CourseResource, CourseResourceAdmin)

organization/xadmin.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', 'category', 'click_nums', 'fav_nums', 'add_time']
    search_fields = ['name', 'desc', 'category', 'click_nums', 'fav_nums']
    list_filter = ['name', 'desc', 'category', 'click_nums', 'fav_nums', 'city__name', 'address', 'add_time']

    relfield_style = 'fk-ajax'

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)

operation/xadmin.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)

xadmin的全局配置

user/xadmin.py 配置后台主题功能

from xadmin import views

# 创建X admin的全局管理器并与view绑定。
class BaseSetting(object):
    # 开启主题功能
    enable_themes = True
    use_bootswatch = True

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

user/xadmin.py 配置后台左上角名称、页面下方公司

class GlobalSettings(object):
    site_title = "VictoriaJiang: 云教育后台管理站"
    site_footer = "VictoriaJiang's Education"
    # 收起菜单
    menu_style = "accordion"
    
# 将头部与脚部信息进行注册:
xadmin.site.register(views.CommAdminView, GlobalSettings)

定义后台的名称

user/apps.py

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

同理设置其他app的名称

猜你喜欢

转载自blog.csdn.net/weixin_35093872/article/details/87992361