开发环境:
python: 3.6.4
Django: 2.0.2
后台管理:xadmin
1.1.项目介绍
系统概括:
系统具有完整的用户登录注册以及找回密码功能,拥有完整个人中心。
个人中心: 修改头像,修改密码,修改邮箱,可以看到我的课程以及我的收藏。可以删除收藏,我的消息。
导航栏: 公开课,授课讲师,授课机构,全局搜索。
点击公开课–> 课程列表,排序-搜索。热门课程推荐,课程的分页。
点击课程–> 课程详情页中对课程进行收藏,取消收藏。富文本展示课程内容。
点击开始学习–> 课程的章节信息,课程的评论信息。课程资源的下载链接。
点击授课讲师–>授课讲师列表页,对讲师进行人气排序以及分页,右边有讲师排行榜。
点击讲师的详情页面–> 对讲师进行收藏和分享,以及讲师的全部课程。
导航栏: 授课机构有分页,排序筛选功能。
机构列表页右侧有快速提交我要学习的表单。
点击机构–> 左侧:机构首页,机构课程,机构介绍,机构讲师。
后台管理系统可以切换主题。左侧每一个功能都有列表显示, 增删改查,筛选功能。
课程列表页可以对不同字段进行排序。选择多条记录进行删除操作。
课程列表页:过滤器->选择字段范围等,搜索,导出csv,xml,json。
课程新增页面上传图片,富文本的编辑。时间选择,添加章节,添加课程资源。
日志记录:记录后台人员的操作
1.2.创建工程
创建工程
django-admin startproject MxOnline
创建四个app
python manage.py startapp users
python manage.py startapp course
python manage.py startapp organization
python manage.py startapp operation
然后分别设计每个app的models
2.1.users 用户
自定义userProfile
系统自动生成的user表如下
id: 主键, password 密码, last_login Django自动记录用户最后登录时间,。
is_superuser 表明用户是否是超级用户(后台管理会用到)。
username 用户名字段不要随便改动, email 邮箱,
is_staff 表示是否是员工(后台管理会用到)。
is_active 用户是否是激活状态, date_joined 注册时间。
users/models.py添加代码:
# users/models.py
from django.db import models
from django.contrib.auth.models import AbstractUser
class UserProfile(AbstractUser):
gender_choices = (
('male','男'),
('female','女')
)
nick_name = models.CharField('昵称',max_length=50,default='')
birthday = models.DateField('生日',null=True,blank=True)
gender = models.CharField('性别',max_length=10,choices=gender_choices,default='female')
adress = models.CharField('地址',max_length=100,default='')
mobile = models.CharField('手机号',max_length=11,null=True,blank=True)
image = models.ImageField(upload_to='image/%Y%m',default='image/default.png',max_length=100)
class Meta:
verbose_name = '用户信息'
verbose_name_plural = verbose_name
def __str__(self):
return self.username
然后做下面的一些设置
因为Image字段需要用到pillow所以需要安装该库
pip install pillow
注册app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users'
]
重载AUTH_USER_MODEL
AUTH_USER_MODEL = 'users.UserProfile'
设计数据库为Mysql
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# }
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mxonline', #数据库名字
'USER': 'root', #账号
'PASSWORD': '123456', #密码
'HOST': '127.0.0.1', #IP
'PORT': '3306', #端口
}
}
mysql模块">init.py里面导入pymysql模块
user/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
迁移数据库
python manage.py makemigrations
python manage.py migrate
2.5.把四个app放到一个文件夹
创建package: apps
把之前的四个app全部剪切到apps包里面
不要选“Search for references”
去掉searchfor的勾选。拖进去之后会报错,说找不到那些import的模块了。
解决方案:右键Mark为sourceRoot。根目录下找不到的,会去apps下搜索。
但是这时候cmd下还是会报错。需要在settings设置
插入第0是希望它先搜索我们app下东西:
import os
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
再运行就可以成功启动了
I. 三、xadmin后台管理
3.1.xadmin的安装
django2.0的安装(源码安装方式):
https://github.com/sshwsfc/xadmin/tree/django2
把zip文件放到pip目录下,运行下面命令安装:
pip install xadmin-django2
如果上面安装提示Runtime错误:
更换安装源(使用豆瓣源)
pip install -i https://pypi.douban.com/simple xadmin-django2
安装成功后,同时也安装了很多依赖的包。
3.2.xadmin的设置
(1)新建Python Package "extra_apps",把源码xadmin文件夹放到extra_apps文件夹下面,此时目录结构如下:
(2)把extra_apps右键mark为Source Root并在settings中加入
sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))
(3)因为我们用源码的xadmin,所以要卸载之前安装的
卸载
(venv) D:\PycharmProjects\edu_platform_django>pip uninstall xadmin
Uninstalling xadmin-2.0.1:
Would remove:
d:\pycharmprojects\edu_platform_django\venv\lib\site-packages\xadmin-2.0.1-py3.7.egg-info
d:\pycharmprojects\edu_platform_django\venv\lib\site-packages\xadmin\*
Proceed (y/n)? y
Successfully uninstalled xadmin-2.0.1
(4)配置路由
把admin改成xadmin
# urls.py
from django.urls import path
import xadmin
urlpatterns = [
path('xadmin/', xadmin.site.urls),
]
(5)注册app
把下面两个app注册到settings.py的INSTALLED_APPS中
'xadmin',
'crispy_forms'
(6)重新生成数据库
python manage.py makemigrations
python manage.py migrate
(7)设置成中文
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
(8)创建一个管理员用户
python manage.py createsuperuser
现在就可以运行了
python manage.py runserver
访问后台:http://127.0.0.1:8000/xadmin
可以看到成功进入管理界面
3.3.users app的models注册
(1)在users下面创建adminx.py,代码如下:
# users/adminx.py
import xadmin
from .models import EmailVerifyRecord
#xadmin中这里是继承object,不再是继承admin
class EmailVerifyRecordAdmin(object):
pass
xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
(2)完善功能,增加显示字段,搜索和过滤
修改users/adminx.py,代码如下:
# users/adminx.py
import xadmin
from .models import EmailVerifyRecord
#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']
xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
3.5.xadmin的全局配置
将全局配置修改:
如左上角:django Xadmin。下面的我的公司
主题修改,app名称汉化,菜单收叠。
使用Xadmin的主题功能。
把全站的配置放在usersadminx.py中:
1)添加主题功能