Django打造网络教学平台
一、所需环境:
安装环境
- ubuntu 18.04 64位
- Django 2.0.5
- Pillow 5.1.0
开发环境
- pycharm2018.2
二、准备虚拟环境
1、创建虚拟环境,并对其激活
mkdir env
virtualenv env/educa
source env/educa/bin/activate
2、在虚拟环境中安装Django和Pillow
pip install Django==2.0.5
pip install Pillow==5.1.0
3、创建新项目
django-admin startproject educa
4、在educa目录中,创建应用程序
cd educa
django-admin startapp courses
编辑educa项目中的setting.py文件,添加courses
‘courses.apps.CoursesConfig’
三、构建课程模型
网络教学平台提供不同科目的课程,每门课程将分为可配置数量的模块,每个模块将包含可配置数量的内容。
分别定义Subject、Course和Module模块。
Subject 1
Course 1
Moudle 1
Content 1(image)
Content 2(text)
Module 2
Content 3(text)
Content 4(file)
Content 5(video)
…
接下来构建课程模块,编辑courses应用程序的文件。
from django.db import models
from dango.contrib.auth.models import User
class Subject(models.Model):
title = models.CharField(max_length = 200)
slug = models.SlugField(max_lenght=200,unique = True)
class Meta():
ordering = ['title']
def __str__(self):
return self.title
class Course(models.Model):
#owner表示课程老师
owner = models.Foreignkey(User,
related_name='courses_created',
on_delete=models.CASCADE)
#subject表示课程所属的科目
subject = models.ForeignKey(Subject,
related_name='course',
on_delete=models.CASCADE)
#title表示课程的标题
title = models.CharField(max_length=200)
#slug表示课程的标识
slug = models.SlugField(max_length=200,unique=True)
#overview标识课程的概述
overview = models.TextField()
#created表示课程创建的日期和时间
created = models.DateTimeField(auto_now_add=True)
class Meta():
ordering = ['-created']
def __str__(self):
return self.title
class Module(models.Model):
course = models.ForeignKey(Course,
related_name= 'modules',
on_delete=models.CASCADE)
title = models.CharField(max_length=200)
description = models.TextField(blank=True)
def __str__(self):
return self.title
上面代码定义了三个模块:Subject、Course、Module模块。
打开命令行,运行下面的命令
python manage.py makemigrations
再运行命令实现数据库迁移
python manage.py migrage
在管理站点中注册
编辑course应用程序终端admin.py文件
from djanog.contrib import admin
from .models import Subject,Course,Module
@admin.register(Subject)
class SubjectAdmin(admin.ModelAdmin):
list_display=['title','slug']
prepopulated_fields = {'slug':('title',)}
class ModuleInline(admin.StackedInline):
model = Module
@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
list_display = ['title','subject','created']
list_filter = ['created','subject']
search_fields= ['title','overview']
prepopulated_fields = {'slug':('title',)}
inlines = [ModuleInline]