逻辑分析

course(课程): user(用户):
商城主页 用户主页(get展示信息,post修改接口)
课程详细页 已购买课程
视频播放页 购物车
视频流接口 登录、注册、注销接口、课程购买接口
加入购物车接口
admin(后台管理):用户表、上线课程、课程种类

主要参数

商城项目的架构 商城项目的业务逻辑_用户名

model开发

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) 生成迁移文件并执行,刷新数据库。

admin后台管理

1)admin不需要我们去构建,直接启动服务,使用80端口,再网站上输入:http://127.0.0.1/admin。即进入了管理页面

2)在终端创建超级用户:python manage.py createsuperuser

输入用户名,邮箱,密码!

3) 创建完成后,在网址上输入用户名和密码,就能进入到Django管理系统当中。

商城项目的架构 商城项目的业务逻辑_商城项目的架构_02


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
  1. 刷新页面:

    7)更改页面显示
    在user的admin中添加:
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

显示页面给改为,表头也被更换:

商城项目的架构 商城项目的业务逻辑_python_03


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='课程管理'

显示视图:

商城项目的架构 商城项目的业务逻辑_python_04


9)让选项可以为空,不必填写:

即在那个选项的后面加上blank=Ture,如:

username = models.CharField(max_length=16,verbose_name='用户名',blank=True)
  1. 使性别以男女显示,而不是数字0和1

在性别后加上选项,前面的数字使存储在后台,后面显示给用户:

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']

显示的页面:

商城项目的架构 商城项目的业务逻辑_python_05