Django网站建设-GMOOC-后台管理系统

新建Django的时候已经自动生成后台管理系统

ip:端口/admin/

利用run manage.py Task生成超级管理员账号

Tools ---> run manage.py Task ---> createsuperuser ---> 按要求输入信息 ---> 生成管理员账号

登陆admin管理后台 ip:端口/admin/

这里写图片描述
这里写图片描述

修改后台管理系统为中文,修改拾取

在setting中修改:

LANGUAGE_CODE = 'zh-hans'
LANGUAGE_CODE = 'zh-cn'   #Django1.7及1.7之前
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai' #修改时区
USE_I18N = True
USE_L10N = True
USE_TZ = False  #True为国际时间

注册数据表到后台管理系统中

报错,出现问题

IntegrityError at /admin/users/userprofile/add/
(1452, 'Cannot add or update a child row: a foreign key constraint fails (`gmooc`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))')

是makemigrations生成的initial文件还是原来的文件未更新造成的

xadmin的安装及使用

安装方法1:
pip install xadmin

安装方法2:
在github中下载源码进行安装,直接下载zip文件,解压后放在python根目录中(mark as source path),在setting 中加入 xadmin 路径

若下载出现问题:
python3安装xadmin出现 UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa4 in position 3444
参考文章

在setting的INSTALLED_APPS中注册 ‘xadmin’ 和第三方包 ‘crispy-forms’

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users',
'courses',
'organization',
'operation',
'xadmin',
'crispy_forms', #注意是下划线不是横线
]

在urls中import urls ,并修改好urlpatterns,将url的pattern修改为xadmin,并把对应的服务器地址修改为xadmin

from django.conf.urls import url
from django.contrib import admin
import xadmin
import crispy_forms

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

xadmin安装之后,需要同步一些表,直接使用makemigrations和migrate同步xadmin信息

登陆xadmin

这里写图片描述

利用xadmin进行model注册

在app中新建adminx.py文件,admin继承object,利用xadmin.site.register进行注册绑定

class EmailVerifyCodeAdmin(object):
    pass

#利用 admin.site.register 进行注册
xadmin.site.register(EmailVerifyCode,EmailVerifyCodeAdmin)


class BannerAdmin(object):
    pass

#利用 admin.site.register 进行注册
xadmin.site.register(Banner,BannerAdmin)

其他以此类推

数据展示调用

这里写图片描述

在   model.py中修改
python2.x  调用__unicode__(self)方法
python3.x  调用__str__(self)方法

在model中添加,利用”str“方法,完成调用str时候的展示。

def __str__(self):
    return '{0}'.format(self.email)

自定义展示列、增加搜索功能、增加过滤器

在adminx.py的绑定中添加list_display方法,用于调用展示列,添加search_fields方法,用于增加搜索框,添加list_filter方法,用于增加过滤器

class EmailVerifyCodeAdmin(object):
    list_display = ['code','email','send_time','send_type']
    search_fields = ['code','email','send_time']
    list_filter = ['code','email','send_time']
#利用 admin.site.register 进行注册
xadmin.site.register(EmailVerifyCode,EmailVerifyCodeAdmin)


class BannerAdmin(object):
    list_display = ['url','img','index','title','add_time']
    search_fields = ['url','img','index','title']
    list_filter = ['url','img','index','title']
    pass
#利用 admin.site.register 进行注册
xadmin.site.register(Banner,BannerAdmin)

注意新旧xadmin是不一样的,用老的库(xadmin)生成的数据表很有可能在新的库下是会报错的,例如xadmin.log

在各个app中使用adminx.py,完成剩余model的注册

organization
#_*_ conding:utf-8 _*_
import xadmin
from xadmin import views
from .models import CityDict,CourseOrganization,Teacher

class CityDictAdmin(object):
    list_display = ['CityName','CityDescribe','AddTime']
    search_fields = ['CityName','CityDescribe']
    list_filter = ['CityName','CityDescribe','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(CityDict,CityDictAdmin)

class CourseOrganizationAdmin(object):
    list_display = ['Organization','OrganizationDescribe','ClickNumber','FavoriteNumber','OrganizationImage','Address','City','AddTime']
    search_fields = ['Organization','OrganizationDescribe','ClickNumber','FavoriteNumber','OrganizationImage','Address','City']
    list_filter = ['Organization','OrganizationDescribe','ClickNumber','FavoriteNumber','OrganizationImage','Address','City','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(CourseOrganization,CourseOrganizationAdmin)

class TeacherAdmin(object):
    list_display = ['BelongOrganization','TeacherName','WorkLife','WorkCompany','WorkPosition','Point','ClickNumber','FavoriteNumber','AddTime']
    search_fields = ['BelongOrganization','TeacherName','WorkLife','WorkCompany','WorkPosition','Point','ClickNumber','FavoriteNumber']
    list_filter = ['BelongOrganization','TeacherName','WorkLife','WorkCompany','WorkPosition','Point','ClickNumber','FavoriteNumber','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(Teacher,TeacherAdmin)
operation
# -*- coding: utf-8 -*-
from .models import UserAsk,CourseComment,UserFavorite,UserMessage,UserCourse
import xadmin

class UserAskAdmin(object):
    list_display = ['UserName','MobileNumber','CourseName','AddTime']
    search_fields = ['UserName','MobileNumber','CourseName']
    list_filter = ['UserName','MobileNumber','CourseName','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(UserAsk,UserAskAdmin)

class CourseCommentAdmin(object):
    list_display = ['User','Course','Comment','AddTime']
    search_fields = ['User','Course','Comment']
    list_filter = ['User','Course','Comment','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(CourseComment,CourseCommentAdmin)

class UserFavoriteAdmin(object):
    list_display = ['User','FavoriteID','FavoriteType','AddTime']
    search_fields = ['User','FavoriteID','FavoriteType']
    list_filter = ['User','FavoriteID','FavoriteType','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(UserFavorite,UserFavoriteAdmin)


class UserMessageAdmin(object):
    list_display = ['User','message','HasRead','AddTime']
    search_fields = ['User','message','HasRead']
    list_filter = ['User','message','HasRead','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(UserMessage,UserMessageAdmin)

class UserCourseAdmin(object):
    list_display = ['User','Course','AddTime']
    search_fields = ['User','Course']
    list_filter = ['User','Course','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(UserCourse,UserCourseAdmin)
courses
# -*- coding: utf-8 -*-

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

class CourseAdmin(object):
    list_display = ['CourseName','degree','Lesson','CourseType','Students','FavouriteNumber','ClikeNumber','AddTime']
    search_fields = ['CourseName','degree','Lesson','CourseType','Students','FavouriteNumber','ClikeNumber']
    list_filter = ['CourseName','degree','Lesson','CourseType','Students','FavouriteNumber','ClikeNumber','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(Course,CourseAdmin)

class LessonAdmin(object):
    list_display = ['Course','LessonName','AddTime']
    search_fields = ['Course','LessonName']
    #要在过滤条件中显示外键的子内容时,用双下划线
    list_filter = ['Course__CourseName','LessonName','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(Lesson,LessonAdmin)

class VideoAdmin(object):
    list_display = ['LessonName','VideoName','AddTime']
    search_fields = ['LessonName','VideoName']
    #要在过滤条件中显示外键的子内容时,用双下划线
    list_filter = ['LessonName','VideoName','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(Video,VideoAdmin)

class CourseResourceAdmin(object):
    list_display = ['Course','Name','DownLoad','AddTime']
    search_fields = ['Course','Name','DownLoad']
    #要在过滤条件中显示外键的子内容时,用双下划线
    list_filter = ['Course','Name','DownLoad','AddTime']

#利用 admin.site.register 进行注册
xadmin.site.register(CourseResource,CourseResourceAdmin)

全局配置,在已注册的app中进行全局配置的设置

主题设置

import xadmin
from xadmin import views

class BaseSetting(object):
    #主题功能,多种主题
    enable_themes = True
    use_bootswatch = True

#注册BaseSetting,需要与view绑定
xadmin.site.register(views.BaseAdminView,BaseSetting)

后台系统头部和底部标签的设置及菜单抽屉效果

class GlobalSettings(object):
#后台系统头部标签
site_title = "张馨"
#后台系统底部标签
site_footer = "叶嘉"
menu_style = "accordion"
xadmin.site.register(views.CommAdminView,GlobalSettings)

app名称修改(显示为中文或想要的内容)(老的xadmin该功能有bug)

users
#apps文件
# -*- coding: utf-8 -*-
from django.apps import AppConfig
class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = '用户信息'

#init文件
default_app_config = 'users.apps.UsersConfig'
courses
#apps文件
# -*- coding: utf-8 -*-
from django.apps import AppConfig
class CoursesConfig(AppConfig):
    name = 'courses'
    verbose_name = '课程信息'

#init文件
default_app_config = 'courses.apps.CoursesConfig'
operation
#apps文件
# -*- coding: utf-8 -*-
from django.apps import AppConfig
class OperationConfig(AppConfig):
    name = 'operation'
    verbose_name = '用户操作'

#init文件
default_app_config = 'operation.apps.OperationConfig'
organization
#apps文件
# -*- coding: utf-8 -*-
from django.apps import AppConfig
class OrganizationConfig(AppConfig):
    name = 'organization'
    verbose_name = '组织机构'

#init文件
default_app_config = 'organization.apps.OrganizationConfig'

切记使用好str方法,在调用的时候正确显示字段,包括作为外键的时候,正确显示字段也是这个方法。

def __str__(self):
    return '{0}'.format(self.email)
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值