django实战项目课程平台搭建

一需求:

具备的功能:

1. 业务逻辑分析

1.1 要实现的功能
1.1.1 用户可用功能
1.1.2 后台管理功能
1.2 要创建的app
1.2.1 course(课程)
1.2.2 user(用户)

2. Model层开发

2.1 创建Django项目
2.2 分析表结构和创建
2.2.1 用户表:User
2.2.2 课程表:Course
2.2.3 课程种类表:Category
2.2.4 表结构的创建
2.3 表结构的迁移
2.4 创建存储网页资源的文件夹

3. Admin后台管理

3.1 创建超级管理员账户
3.2 登录后台管理系统
3.3 注册创建的模型类
3.4 配置后台管理页面的显示内容
3.5 配置app在后台显示的名称
3.6 配置模型类表的显示中⽂名称
3.7 定义某些字段可以为空

4. 路由与视图

4.1 在创建的app中创建urls.py文件
4.2 在总路由文件urls.py中载件两个app的urls.py文件
4.3 在course的urls.py文件中配置路由映射
4.4 在course的views.py视图文件中创建对应的视图函数
4.5 在user的urls.py文件中配置路由映射
4.6 在user的views.py视图文件中创建对应的视图函数

5. 商品首页后端数据渲染

5.1 创建静态网页资源
5.1.1 在static文件夹下
5.1.2 在templates文件夹中
5.1.3 在settings.py中配置静态资
5.2 抽离html模板的各个模块
5.3 根据各个html页面需求,引⽤抽离的模块并做相应的修改

6. 用户个人管理页面

6.1 配置用户注册页面
6.2 创建中间件
6.3 配置用户登录界面
6.4 配置用户注销界面
6.5 配置用户主页base.html

7. 购物车功能完善

7.1 商品详细页
7.2 添加购物车与展示
7.3 购买课程与已购买课程

8. 视频传输权限与协议
9. 网站安全性优化

后端管理功能
1.1课程平台首页展示

1.2登录注册功能
在这里插入图片描述
在这里插入图片描述
1.3课程详情页
在这里插入图片描述
1.4加入购物车功能,立即购买功能
在这里插入图片描述在这里插入图片描述
1.5个人详情页
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述1.6观看功能
在这里插入图片描述
2.1后端管理功能
在这里插入图片描述
2.2用户表
在这里插入图片描述
2.3课程表
在这里插入图片描述
在这里插入图片描述

二.代码实现

1. 业务逻辑分析
1.1 要实现的功能

1.1.1 用户可用功能
用户注册
用户登录、修改客户资料
用户注销
用户购买课程以及查看已购买课程
用户把课程加入购物车以及查看购物车
1.1.2 后台管理功能
用户表——管理用户(增删改用户信息及用户余额等)
上线课程——管理课程(增加新课程、上传课程相关文件和信息)
课程种类——管理课程类型(新增课程类型)

1.2 要创建的app

1.2.1 course(课程)
商城主页
页面展示所有课程的名称和价格,课程按课程类型排列
课程详细页
展示该课程的详细信息:名称、创建日期、价格,根据用户情况提供加入购物车、购买课程、直接观看
视频的接口
视频播放页
调视频流接口,实现安全播放视频功能
视频流接口
用安全的方式,把视频以视频流的形式输出到浏览器客户端
1.2.2 user(用户)
用户主页
通过get方法,展示用户信息:账号、户名、余额、性别等
通过post方法,修改接口
已购买课程页面
展示用户已购买的所有课程,可以直接进入观看
购物车页面
展示用户购物⻋内的所有课程
登录、注册、注销接口
根据不同场景提供不同的接口,并确保在未登陆情况下不可以访问需要登陆后或购买课程后才可以访问
的页面,互相之间不能造成影响
课程购买接口
加入购物车接口

2. Model层开发
2.1 创建Django项目

直接在PyCharm中创建Django项目,同时创建一个user的app
打开settings.py,配置数据库

DATABASES = {
   
	'default': {
   
	'ENGINE': 'django.db.backends.mysql',
	'HOST': 'localhost',
	'PORT': '3306',
	'NAME': 'csdn_course', # 数据库名称尽量跟项目名称一致
	'USER': 'root',
	'PASSWORD': '123456'
 }
}

在MySQL中创建这个相应的数据库
修改settings.py中的语言和时区设置

LANGUAGE_CODE = 'zh-hans' # 中国
TIME_ZONE = 'Asia/Shanghai' # 东八区时区
2.2 分析表结构和创建

2.2.1 用户表:User
在这里插入图片描述
2.2.2 课程表:Course
在这里插入图片描述
2.2.3 课程种类表:Category
在这里插入图片描述
2.2.4 表结构的创建

from django.db import models
#用户表, 可以留空的字段传blank=True参数, 表单提交时可为空
class User(models.Model):
	class Meta(): 
#创建Meta类, 配置verbose_name, 让页面显示字段的中文名称
		verbose_name = verbose_name_plural = '用户表'
account = models.CharField(max_length=16, unique=True, verbose_name='账 号')
#账号唯一, 传入verbose_name参数使其显示中文名称
password = models.CharField(max_length=16, verbose_name='密码')
username = models.CharField(max_length=16, verbose_name='用户名',blank=True)
money = models.DecimalField(max_digits=12, decimal_places=2,default=0, verbose_name='余额') 
#总位数12,小数位2
#0:男,1:女,默认0,传入choices=((0, '男'), (1, '女'))参数, 在后台提供下拉选项,choices里面的元素为元组
gender = models.PositiveSmallIntegerField(default=0, verbose_name='性 别', choices=((0, '男'), (1, '女')))
tel = models.CharField(max_length=11, default='',verbose_name='手机号', blank=True)

def __str__(self):
	return self.account
# 定义__str__方法, 返回字段account, 在页面中直接显示该字段的名称

课程表

from django.db import models
import datetime
from user.models import User
import os

# 定义存储课程视频路径的方法
def save_file(instance, filename):
    # 视频存储在根目录下的video文件夹内
    return os.path.join('video', filename)

# 定义存储课程图片路径的方法
def save_img(instance, filename):
    # 图片存储在根目录下static文件夹下的img文件夹内
    return os.path.join('static', 'img', filename)
    
# 课程种类表, 传入verbose_name参数让页面显示中文名称
class Category(models.Model):
    class Meta():  # 创建一个Meta类, 配置verbose_name, 让页面显示字段的中文名称
        verbose_name = verbose_name_plural = '课程种类表'

    name = models.CharField(max_length=50, unique=True, verbose_name='课程种类')

    def __str__(self):  # 定义__str__方法, 返回字段name, 在页面中直接显示字段的名称
        return self.name

# 课程表, 传入verbose_name参数让页面显示中文名称, blank=True允许表单传入数据为空
class Course(models.Model):
    # 创建一个存储收费与否的元组, 传入status作为参数, 提供显示中文名称的下拉菜单
    STATUS_CHOICES = (
        (0, '收费'),
        (1, '免费')
    )
    class Meta():  # 创建一个Meta类, 配置verbose_name, 让页面显示字段的中文名称
        verbose_name = verbose_name_plural = '课程表'

    courseName = models.CharField(max_length=40, verbose_name='课程名称')
    fileName = models.FileField
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值