Jiangchuanwei

三、xadmin后台管理

  3.1 、xadmin的安装

   github下在xadmin源码:下载地址

   下载完成之后,解压复制xadmin文件夹

  3.2、xadmin配置

  (1)新建python package “extra_apps”,把xadmin文件夹复制到extra_apps文件夹下面

  (2)把extra_apps右键mark为Source Root

  (3)在settings中加入    

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

  (4)配置路由

     把admin改成xadmin      

 

#mxonline/urls.py

from django.conf.urls import url

import xadmin

urlpatterns = [
    url(r\'^xdmin/\', xadmin.site.urls),
]

  (5)注册app

     把下面两个app注册到settings.py的INSTALLED_APPS中

\'xadmin\',
\'crispy_forms\',

  (6)重新生成数据库

python manage.py makemigrations
python manage.py migrate

  (7)将xadmin后台设置成中文街面

LANGUAGE_CODE = \'zh-hans\'

TIME_ZONE = \'Asia/Shanghai\'

USE_I18N = True

USE_L10N = True

USE_TZ = False

  (8)创建超级用户(管理员用户)

python manage.py createsuperuser

  根据提示输入账号名、邮箱、密码

  (9)运行,登录

python manage.py runserver 

  访问:http://127.0.0.1:8000/xadmin/

  

  3.3、models注册

  • users下创建adminx.py
import xadmin

from .models import EmailVerifyRecord, Banner


# xadmin中这里是继承object,不再是继承admin
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\']


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\']


xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
xadmin.site.register(Banner, BannerAdmin)
  • course下创建adminx.py
import xadmin

from .models import Course, Lesson, Video, CourseResource


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\']
    # 这里course__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\']
    list_filter = [\'course__name\', \'name\', \'download\', \'add_time\']


# 将管理器与model进行注册关联
xadmin.site.register(Course, CourseAdmin)
xadmin.site.register(Lesson, LessonAdmin)
xadmin.site.register(Video, VideoAdmin)
xadmin.site.register(CourseResource, CourseResourceAdmin)
  • organization下创建adminx.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\', \'click_nums\', \'fav_nums\', \'add_time\']
    search_fields = [\'name\', \'desc\', \'click_nums\', \'fav_nums\']
    list_filter = [\'name\', \'desc\', \'click_nums\', \'fav_nums\', \'city__name\', \'address\', \'add_time\']


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下创建adminx.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)

  完成之后,启动项目,后台管理界面如下:

    

  3.4、xadmin的全局配置

将全局配置修改:

  • 如左上角:django Xadmin。下面的我的公司
  • 主题修改,app名称汉化,菜单收叠。

  使用xadmin的主题功能

  把全站的配置放在users/adminx.py中:

  (1)添加主题功能

from xadmin import views

# 创建xadmin的最基本管理器配置,并与view绑定
class BaseSetting(object):
    # 开启主题功能
    enable_themes = True
    use_bootswatch = True

# 将基本配置管理与view绑定
xadmin.site.register(views.BaseAdminView,BaseSetting)

  (2)修改左上方的django admin和下面的我的公司

# 全局修改,固定写法
class GlobalSettings(object):
    # 修改title
    site_title = \'xxxxxx\'
    # 修改footer
    site_footer = \'xoxoxo\'
    # 收起菜单
    menu_style = \'accordion\'

# 将title和footer信息进行注册
xadmin.site.register(views.CommAdminView,GlobalSettings)

  (3)修改在xadmin后台系统app的名字

  在每个app下面的apps.py文件

#users/apps.py

from django.apps import AppConfig


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

  在每个app下面__init__.py中引用apps.py的配置

#users/__init__.py
default_app_config = \'users.apps.UsersConfig\'

 

#operation/apps.py
from django.apps import AppConfig


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

#operation/__init__.py
default_app_config = \'operation.apps.OperationConfig\' 
#course/apps.py
from django.apps import AppConfig


class CourseConfig(AppConfig):
    name = \'course\'
    verbose_name = \'课程\' 

#course/__init.py__
default_app_config = \'course.apps.CourseConfig\' 
#organization/apps.py
from django.apps import AppConfig


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

#organization/__init__.py
default_app_config = \'organization.apps.OrganizationConfig\' 

 

分类:

技术点:

相关文章: