1. 程式人生 > >課程列表接口,課程詳情接口()

課程列表接口,課程詳情接口()

rec ios ger ech order gre float 生成 end

先在models中建幾張表結構:

from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation

# Create your models here.
# class CourseType(models.Model):
#     type_name = models.CharField(verbose_name=‘課程類別‘,max_length=32)
# class Course(models.Model): # title = models.CharField(verbose_name=‘課程名稱‘,max_length=32) # course_info = models.CharField(verbose_name=‘課程描述‘,max_length=128) # student_num = models.IntegerField() # choice = ((1,‘初級‘),(2,‘中級‘),(3,‘高級‘)) # student_level = models.IntegerField(verbose_name=‘級別‘,choices=choice)
# course_price = models.IntegerField() # class CourseDetail(models.Model): # course = models.OneToOneField(to=‘Course‘) # contents = models.CharField(verbose_name=‘所學內容‘,max_length=128) # time = models.CharField(verbose_name=‘時長‘,max_length=32) # choice = ((1, ‘初級‘), (2, ‘中級‘), (3, ‘高級‘))
# student_level = models.IntegerField(verbose_name=‘級別‘, choices=choice) # student_num = models.IntegerField() # score = models.IntegerField() # recommended_courses = models.CharField(verbose_name=‘推薦課程‘,max_length=32) # class Price(models.Model): # old_price = models.IntegerField(verbose_name=‘原價‘) # now_price = models.IntegerField(verbose_name=‘現價‘) # content_type = models.ForeignKey(to=ContentType) # object_id = models.PositiveIntegerField() # content_object = GenericForeignKey("content_type", "object_id") # class CourseChapter(models.Model): # course_detail = models.ForeignKey(to=‘CourseDetail‘) # # class ClassHours(models.Model): # course_chapter = models.OneToOneField(to=‘CourseChapter‘) # # class questions(models.Model): # content_type = models.ForeignKey(to=ContentType) # object_id = models.PositiveIntegerField() # content_object = GenericForeignKey("content_type", "object_id") # class teacher(models.Model): # name = models.CharField(verbose_name=‘姓名‘,max_length=32) # choice = ((1,‘男‘),(2,‘女‘)) # sex = models.IntegerField(verbose_name=‘性別‘,choices=choice) class Course(models.Model): """專題課程""" name = models.CharField(max_length=128, unique=True) course_img = models.CharField(max_length=255) brief = models.TextField(verbose_name="課程概述", max_length=2048) level_choices = ((0, 初級), (1, 中級), (2, 高級)) level = models.SmallIntegerField(choices=level_choices, default=1) pub_date = models.DateField(verbose_name="發布日期", blank=True, null=True) period = models.PositiveIntegerField(verbose_name="建議學習周期(days)", default=7) order = models.IntegerField("課程順序", help_text="從上一個課程數字往後排") status_choices = ((0, 上線), (1, 下線), (2, 預上線)) status = models.SmallIntegerField(choices=status_choices, default=0) # 用於GenericForeignKey反向查詢,不會生成表字段,切勿刪除 price_policy = GenericRelation("PricePolicy") def __str__(self): return self.name class Meta: verbose_name_plural = "專題課" class CourseDetail(models.Model): """課程詳情頁內容""" course = models.OneToOneField("Course", on_delete=models.CASCADE) hours = models.IntegerField("課時") # 課程的標語 口號 course_slogan = models.CharField(max_length=125, blank=True, null=True) # video_brief_link = models.CharField(verbose_name=‘課程介紹‘, max_length=255, blank=True, null=True) # why_study = models.TextField(verbose_name="為什麽學習這門課程") # what_to_study_brief = models.TextField(verbose_name="我將學到哪些內容") # career_improvement = models.TextField(verbose_name="此項目如何有助於我的職業生涯") # prerequisite = models.TextField(verbose_name="課程先修要求", max_length=1024) # 推薦課程 recommend_courses = models.ManyToManyField("Course", related_name="recommend_by", blank=True) teachers = models.ManyToManyField("Teacher", verbose_name="課程講師") def __str__(self): return "%s" % self.course class Meta: verbose_name_plural = "課程詳細" class PricePolicy(models.Model): """價格與有課程效期表""" price = models.FloatField() # course = models.ForeignKey("Course") valid_period_choices = ((1, 1天), (3, 3天), (7, 1周), (14, 2周), (30, 1個月), (60, 2個月), (90, 3個月), (180, 6個月), (210, 12個月), (540, 18個月), (720, 24個月), ) valid_period = models.SmallIntegerField(choices=valid_period_choices) content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE) # 關聯course or degree_course object_id = models.PositiveIntegerField() content_object = GenericForeignKey(content_type, object_id) class Meta: unique_together = ("content_type", object_id, "valid_period") verbose_name_plural = "價格策略" def __str__(self): return "%s(%s)%s" % (self.content_object, self.get_valid_period_display(), self.price) class Teacher(models.Model): """講師、導師表""" name = models.CharField(max_length=32) image = models.CharField(max_length=128) brief = models.TextField(max_length=1024) def __str__(self): return self.name class Meta: verbose_name_plural = "講師"

數據庫遷移後錄入數據:

技術分享圖片

技術分享圖片

技術分享圖片

前端發送axios請求:

技術分享圖片

課程列表接口,課程詳情接口()