course(课程): user(用户):
商城主页 用户主页(get展示信息,post修改接口)
课程详细页 已购买课程
视频播放页 购物车
视频流接口 登录、注册、注销接口、课程购买接口
加入购物车接口
admin(后台管理):用户表、上线课程、课程种类
1)新建一个Django项目,配置settings文件:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': '3306',
'NAME': 'csdn_course',
'USER': 'root',
'PASSWORD': '12345'
}
}
2)链接MySQL,创建数据表结构。
3)修改语言和时区。
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
4)创建模型
(1)用户表:
class User(models.Model):
account = models.CharField(max_length=16,unique=True,verbose_name='账号')
password = models.CharField(max_length=16,verbose_name='密码')
username = models.CharField(max_length=16,verbose_name='用户名')
money = models.DecimalField(max_digits=12,decimal_places=2,default=0,verbose_name='余额') # 总位数12,小数位2
gender = models.PositiveSmallIntegerField(default=0,verbose_name='性别') # 0:男,1:女,默认0
tel = models.CharField(max_length=11,default='',verbose_name='手机号')
5)在终端中创建新的apps:django-admin startapp course
然后再settings中添加apps: ‘course.apps.CourseConfig’,
6)再新的apps(course)添加模型类,需要时间和指向另一主体,所以需要导包:
from django.db import models
import datetime
from user.models import User
# Create your models here.
class Category(models.Model):
name = models.CharField(max_length=50,unique=True,verbose_name='课程种类')
class Course(models.Model):
courseName = models.CharField(max_length=40,verbose_name='课程名称')
fileName = models.FileField(verbose_name='文件名称')
imgname = models.ImageField(verbose_name='课程图片')
pCategory = models.ForeignKey(to=Category,related_name='courses_set',on_delete=models.CASCADE,verbose_name='课程类别')
price = models.DecimalField(max_digits=7,decimal_places=2,default=0,verbose_name='售价')
summary = models.CharField(max_length=1000,default='',verbose_name='课程介绍')
status = models.PositiveSmallIntegerField(default=0,verbose_name='状态') # 0:收费 1:免费,默认0
createDatetime = models.DateTimeField(default=datetime.datetime.now(),verbose_name='创建时间')
userBuyer = models.ManyToManyField(to=User,related_name='userBuyer_set',verbose_name='购买用户')
userShoppingcart = models.ManyToManyField(to=User,related_name='userShoppingcart_set',verbose_name='加入购物车的用户')
7) 生成迁移文件并执行,刷新数据库。
1)admin不需要我们去构建,直接启动服务,使用80端口,再网站上输入:http://127.0.0.1/admin。即进入了管理页面
2)在终端创建超级用户:python manage.py createsuperuser
输入用户名,邮箱,密码!
3) 创建完成后,在网址上输入用户名和密码,就能进入到Django管理系统当中。
4) 在管理中添加数据,先找到course中admin,输入:
from django.contrib import admin
from .models import Course,Category
# Register your models here.
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
pass
@admin.register(Course)
class CourseAdmin(admin.ModelAdmin):
pass
5)然后找到user的admin:
from django.contrib import admin
from .models import User
# Register your models here.
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
pass
from django.contrib import admin
from .models import User
admin.site.site_header = 'CSDN微课后台管理'
admin.site.index_title = '后台系统'
admin.site.site_title = '管理'
# Register your models here.
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
pass
显示页面给改为,表头也被更换:
8) 在course的apps.py文件中添加:
from django.apps import AppConfig
class CourseConfig(AppConfig):
name = 'course'
verbose_name='课程管理' # 添加
在user的apps.py文件中添加:
from django.apps import AppConfig
class UserConfig(AppConfig):
name = 'user'
verbose_name= '用户管理' # 添加
在course的model中添加:
class Category(models.Model):
class Meta():
verbose_name=verbose_name_plural = '课程种类表' # 添加
name = models.CharField(max_length=50,unique=True,verbose_name='课程种类')
class Course(models.Model):
class Meta():
verbose_name = verbose_name_plural = '课程表' #添加
courseName = models.CharField(max_length=40,verbose_name='课程名称')
fileName = models.FileField(verbose_name='文件名称')
imgname = models.ImageField(verbose_name='课程图片')
pCategory = models.ForeignKey(to=Category,related_name='courses_set',on_delete=models.CASCADE,verbose_name='课程类别')
price = models.DecimalField(max_digits=7,decimal_places=2,default=0,verbose_name='售价')
summary = models.CharField(max_length=1000,default='',verbose_name='课程介绍')
status = models.PositiveSmallIntegerField(default=0,verbose_name='状态') # 0:收费 1:免费,默认0
createDatetime = models.DateTimeField(default=datetime.datetime.now(),verbose_name='创建时间')
userBuyer = models.ManyToManyField(to=User,related_name='userBuyer_set',verbose_name='购买用户')
userShoppingcart = models.ManyToManyField(to=User,related_name='userShoppingcart_set',verbose_name='加入购物车的用户')
在user中的model中添加:
class CourseConfig(AppConfig):
name = 'course'
class Meta():
verbose_name='课程管理'
显示视图:
9)让选项可以为空,不必填写:
即在那个选项的后面加上blank=Ture,如:
username = models.CharField(max_length=16,verbose_name='用户名',blank=True)
在性别后加上选项,前面的数字使存储在后台,后面显示给用户:
gender = models.PositiveSmallIntegerField(default=0,verbose_name='性别',choices=((0,'女'),(1,'男'))) # 0:女,1:男,默认0 choices为添加项
11) 让用户表显得更加人性化,显示的数据变多,在user的admin中把pass去掉,换成,在增加一个过滤器和搜索框:
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
list_display = ['id','account','username','gender','money']
list_filter = ['gender']
search_fields = ['account','username']