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