Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
与之前电商项目的商品模型 Django实战-生鲜电商-模型层,本次的付费设计相对比较简单。多增加了一项购买资讯服务就可以观看学习课程视频。
课程分类、讲师、课程、支付订单,会发现在用户购买之前怎样限制用户不能观看视频,是通过一个字段来判断用户是否购买,还是通过查询数据库,查找用户是否有支付过这一笔课程订单。课程与分类和讲师都是一对多的关系。
① 课程分类
class CourseCategory(models.Model):
name = models.CharField(max_length=100, verbose_name="分类名称")
② 讲师
class Teacher(models.Model):
username = models.CharField(max_length=100, verbose_name="名称")
jobtitle = models.CharField(max_length=100, verbose_name="职称")
profile = models.TextField(verbose_name="自我介绍")
avatar = models.URLField(verbose_name="头像")
③ 课程
class Course(models.Model):
title = models.CharField(max_length=100, verbose_name="标题")
video_url = models.URLField(verbose_name="视频链接")
cover_url = models.URLField(verbose_name="封面图链接")
price = models.FloatField(verbose_name="价格")
duration = models.IntegerField(verbose_name="时长")
profile = models.TextField(verbose_name="视频介绍")
pub_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
category = models.ForeignKey('CourseCategory', on_delete=models.DO_NOTHING, verbose_name="课程分类") #什么事也不做
teacher = models.ForeignKey('Teacher', on_delete=models.DO_NOTHING, null=True, verbose_name="课程讲师")
④ 支付订单
class CourseOrder(models.Model):
pub_time = models.DateTimeField(auto_now_add=True)
amount = models.FloatField()
# 1: 代表未支付 2:支付成功
atatus = models.SmallIntegerField()
course = models.ForeignKey("Course", on_delete=models.DO_NOTHING)
buyer = models.ForeignKey("xfzauth.User", on_delete=models.DO_NOTHING)
# 1: 支付宝支付 2:微信支付 0: 未知
istype = models.SmallIntegerField(default=0)