django+xadmin在线教育平台慕学网(一)
一、前言
版本:
Python 3.5
Django 1.11
后臺(tái)管理:
xadmin
1.1 項(xiàng)目介紹
系統(tǒng)概括:
- 系統(tǒng)具有完整的用戶(hù)登錄注冊(cè)以及找回密碼功能,擁有完整個(gè)人中心。
- 個(gè)人中心: 修改頭像,修改密碼,修改郵箱,可以看到我的課程以及我的收藏。可以刪除收藏,我的消息。
- 導(dǎo)航欄: 公開(kāi)課,授課講師,授課機(jī)構(gòu),全局搜索。
- 點(diǎn)擊公開(kāi)課–> 課程列表,排序-搜索。熱門(mén)課程推薦,課程的分頁(yè)。
- 點(diǎn)擊課程–> 課程詳情頁(yè)中對(duì)課程進(jìn)行收藏,取消收藏。富文本展示課程內(nèi)容。
- 點(diǎn)擊開(kāi)始學(xué)習(xí)–> 課程的章節(jié)信息,課程的評(píng)論信息。課程資源的下載鏈接。
- 點(diǎn)擊授課講師–>授課講師列表頁(yè),對(duì)講師進(jìn)行人氣排序以及分頁(yè),右邊有講師排行榜。
- 點(diǎn)擊講師的詳情頁(yè)面–> 對(duì)講師進(jìn)行收藏和分享,以及講師的全部課程。
- 導(dǎo)航欄: 授課機(jī)構(gòu)有分頁(yè),排序篩選功能。
- 機(jī)構(gòu)列表頁(yè)右側(cè)有快速提交我要學(xué)習(xí)的表單。
- 點(diǎn)擊機(jī)構(gòu)–> 左側(cè):機(jī)構(gòu)首頁(yè),機(jī)構(gòu)課程,機(jī)構(gòu)介紹,機(jī)構(gòu)講師。
- 后臺(tái)管理系統(tǒng)可以切換主題。左側(cè)每一個(gè)功能都有列表顯示, 增刪改查,篩選功能。
- 課程列表頁(yè)可以對(duì)不同字段進(jìn)行排序。選擇多條記錄進(jìn)行刪除操作。
- 課程列表頁(yè):過(guò)濾器->選擇字段范圍等,搜索,導(dǎo)出csv,xml,json。
- 課程新增頁(yè)面上傳圖片,富文本的編輯。時(shí)間選擇,添加章節(jié),添加課程資源。
- 日志記錄:記錄后臺(tái)人員的操作
1.2整站模塊劃分
1.2.1前臺(tái)功能模塊
?
1.3創(chuàng)建django項(xiàng)目
django-admin startproject mxonline?
二、關(guān)于model設(shè)計(jì)
users
-UserProfile(用戶(hù)信息)?:昵稱(chēng)、生日、性別、地址、手機(jī)號(hào)碼、頭像
-EmailVerifyRecord(郵箱驗(yàn)證碼):驗(yàn)證碼、郵箱、類(lèi)型(是找回密碼還是注冊(cè))、時(shí)間
-Banner(輪播圖):標(biāo)題、輪播圖、url、順序、添加時(shí)間
course
-Course(課程):課程名、描述、詳情、課程難度、學(xué)習(xí)時(shí)長(zhǎng)
-Lesson(章節(jié)):課程名、章節(jié)名、添加時(shí)間
-Video(視頻):課程名、視頻名、添加時(shí)間
-CourseResource(課程資源):課程名、名稱(chēng)、資源文件、添加時(shí)間
organization
-CoureseOrg(課程機(jī)構(gòu)):名稱(chēng)、描述、點(diǎn)擊數(shù)、收藏?cái)?shù)、封面圖
-CityDict(城市):名字、描述、添加時(shí)間
-Teacher(教師):所屬機(jī)構(gòu)、教師姓名、工作時(shí)間、就職公司
operation
-UserAsk(用戶(hù)咨詢(xún)):名字、手機(jī)號(hào)、課程名、添加時(shí)間
-CourseComments(課程評(píng)論):用戶(hù)、課程、評(píng)論、添加時(shí)間
-UserFavorite(用戶(hù)收藏):用戶(hù)、數(shù)據(jù)id、收藏類(lèi)型、添加時(shí)間
-UserMessage(用戶(hù)信息):接受用戶(hù)、消息內(nèi)容、是否已讀、添加時(shí)間
-Usercourse(用戶(hù)課程):用戶(hù)、課程、添加時(shí)間
創(chuàng)建上面四個(gè)app
python manage.py startapp users python manage.py startapp organization python manage.py startapp course python manage.py startapp opetation創(chuàng)建package:apps -->把四個(gè)app拖到apps包里面,不要勾選Search for references
在apps中右鍵mark為sourceRoot。在根目錄下找不到,回去apps下搜索,然后在settings設(shè)置
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'))? 必須安裝pymysql 和pillow (因?yàn)镮mage字段需要用到pillow所以需要安裝該庫(kù))
pip install pymysql pip install pillow
在settings中修改數(shù)據(jù)庫(kù):
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1','POST': '3306','USER': 'root','PASSWORD': '123456','NAME': 'mxonline',} }在mxonline文件夾下的__init.py__添加mysql,作為數(shù)據(jù)庫(kù)
import pymysql pymysql.install_as_MySQLdb()將四個(gè)app注冊(cè)到settings中:
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','users','course','organization','operation', ]2.1、users表
? django會(huì)為我們默認(rèn)生成數(shù)據(jù)表,默認(rèn)生成的數(shù)據(jù)表有以下字段:
id: 主鍵、password 密碼、 last_login記錄用戶(hù)最后登錄時(shí)間、is_superuser 表明用戶(hù)是否是超級(jí)用戶(hù)、username 用戶(hù)名字段不要隨便改動(dòng)、
email 郵箱、is_staff 表示是否是員工、
is_active 用戶(hù)是否是激活狀態(tài), date_joined 注冊(cè)時(shí)間
? 當(dāng)我django默認(rèn)生成的數(shù)據(jù)表不夠我們使用時(shí)候,我們需要擴(kuò)展數(shù)據(jù)庫(kù)表
- apps/users/models.py代碼
from datetime import datetimefrom django.db import models from django.contrib.auth.models import AbstractUserclass UserProfile(AbstractUser):
'''用戶(hù)個(gè)人中心'''gender_choices = (('male', '男'), ('female','女'))nick_name = models.CharField(verbose_name='昵稱(chēng)', max_length=50, default='')birthday = models.DateField(verbose_name='生日', null=True, blank=True)gender = models.CharField(verbose_name='性別', max_length=10, choices=gender_choices, default='female')address = models.CharField(verbose_name='地址', max_length=100, default='')mobile = models.CharField(verbose_name='手機(jī)號(hào)', 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 = "用戶(hù)信息"verbose_name_plural = verbose_namedef __str__(self):return self.usernameclass EmailVerifyRecord(models.Model):
'''驗(yàn)證碼'''send_choices =(('register', '注冊(cè)'), ('forget', '找回密碼'))code = models.CharField(verbose_name='驗(yàn)證碼', max_length=20)email = models.EmailField(verbose_name='郵箱', max_length=50)send_type = models.CharField(choices=send_choices, max_length=10)send_time = models.DateTimeField(default=datetime.now)class Meta:verbose_name = "郵箱驗(yàn)證碼"verbose_name_plural = verbose_nameclass Bnner(models.Model):'''image上傳文件,url保存圖片路徑,index控制輪播圖的播放順序'''title = models.CharField(verbose_name="標(biāo)題", max_length=100)image = models.ImageField(verbose_name='輪播圖', upload_to='banner/%Y%m', max_length=100)url = models.URLField(verbose_name='訪(fǎng)問(wèn)地址', max_length=200)index = models.IntegerField(verbose_name='順序', default=100)add_time = models.DateTimeField(verbose_name='添加時(shí)間', default=datetime.now)class Meta:verbose_name = '輪播圖'verbose_name_plural = verbose_name
在setttings中,重載AUTH_USER_MODEL
AUTH_USER_MODEL = 'users.UserProfile'?2.2、course 表
- apps/course/models.py代碼
from datetime import datetimefrom django.db import modelsclass Course(models.Model):'''課程表'''DEGREE_CHOICES = (("cj", "初級(jí)"),("zj", "中級(jí)"), ("gj", "高級(jí)"))name = models.CharField(verbose_name="課程名", max_length=50)desc = models.CharField(verbose_name="課程描述", max_length=300)detail = models.TextField(verbose_name="課程詳情")degree = models.CharField('難度', choices=DEGREE_CHOICES, max_length=2)learn_times = models.IntegerField(verbose_name="學(xué)習(xí)時(shí)長(zhǎng)(分鐘數(shù))", default=0)students = models.IntegerField(verbose_name="學(xué)習(xí)人數(shù)", default=0)fav_nums = models.IntegerField(verbose_name="收藏人數(shù)", default=0)image = models.ImageField(verbose_name="封面圖", upload_to="courses/%Y/%m", max_length=100)click_nums = models.IntegerField(verbose_name="點(diǎn)擊數(shù)", default=0)add_time = models.DateTimeField(verbose_name="添加時(shí)間", default=datetime.now)class Meta:verbose_name = "課程"verbose_name_plural = verbose_namedef __str__(self):return self.nameclass Lesson(models.Model):'''章節(jié)信息表'''course = models.ForeignKey(Course)name = models.CharField(verbose_name="章節(jié)名", max_length=100)add_time = models.DateTimeField(verbose_name="添加時(shí)間", default=datetime.now)class Meta:verbose_name = "章節(jié)"verbose_name_plural = verbose_namedef __str__(self):return '《{0}》課程的章節(jié) >> {1}'.format(self.course, self.name)class Video(models.Model):'''視頻表'''lesson = models.ForeignKey(Lesson, verbose_name="章節(jié)", on_delete=models.CASCADE)name = models.CharField(verbose_name="視頻名",max_length=100)add_time = models.DateTimeField(verbose_name="添加時(shí)間", default=datetime.now)class Meta:verbose_name = "視頻"verbose_name_plural = verbose_nameclass CourseResource(models.Model):'''課程資源表'''course = models.ForeignKey(Course, verbose_name="課程",on_delete=models.CASCADE)name = models.CharField(verbose_name="名稱(chēng)", max_length=100)download = models.FileField("資源文件", upload_to="course/resource/%Y/%m", max_length=100)add_time = models.DateTimeField(verbose_name="添加時(shí)間", default=datetime.now)class Meta:verbose_name = "課程資源"verbose_name_plural = verbose_name
2.3、organization
- apps/organization/models.py代碼
?
2.4、operation
- apps/operation/models.py代碼
? 對(duì)模型進(jìn)行遷移:
python manage.py makemigrations python manage.py migrate
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Jiangchuanwei/p/9110686.html
總結(jié)
以上是生活随笔為你收集整理的django+xadmin在线教育平台慕学网(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux安装mysql8依赖的环境_C
- 下一篇: 8086汇编语言程序设计