教程总体简介:欢迎来到美多商城! 项目需求分析 1. 项目主要页面介绍 2. 归纳项目主要模块 3. 知识要点 项目架构设计 1. 项目开发模式 2. 项目运行机制 项目介绍 创建工程 1. 准备项目代码仓库 3. 创建美多商城工程 配置开发环境 1. 新建配置文件 2. 指定开发环境配置文件 配置Jinja2模板引擎 1. 安装Jinja2扩展包 配置MySQL数据库 3. 安装PyMySQL扩展包 配置Redis数据库 1. 安装django-redis扩展包 配置工程日志 2. 准备日志文件目录 3. 日志记录器的使用 4. Git管理工程日志 配置前端静态文件 2. 指定静态文件加载路径 工程创建和配置 项目准备 收货地址 展示地址前后端逻辑 1. 展示地址接口设计和定义 设置默认地址 2. 设置默认地址后端逻辑实现 修改地址标题 3. 修改地址标题前端逻辑实现 修改密码 1. 修改密码后端逻辑 用户中心 商品数据库表设计 SPU和SKU 1. SPU介绍 思考 首页广告数据库表分析 2. 定义首页广告模型类 文件存储方案FastDFS 1. FastDFS介绍 准备商品数据 容器化方案Docker 1. Docker介绍 2. Docker安装(ubuntu 16.04) Docker和FastDFS上传和下载文件 1. Docker安装运行FastDFS 3. 浏览器下载并渲染图片 录入商品数据和图片数据 1. SQL脚本录入商品数据 2. FastDFS服务器录入图片数据 首页广告 展示首页商品频道分类 1. 分析首页商品频道分类数据结构 自定义Django文件存储类 1. Django文件存储类url()方法介绍 商品列表页分析 1. 商品列表页组成结构分析 列表页面包屑导航 列表页分页和排序 列表页热销排行 1. 查询列表页热销排行数据 全文检索方案Elasticsearch 1. 全文检索和搜索引擎原理 3. 使用Docker安装Elasticsearch 商品搜索 Haystack扩展建立索引 1. Haystack介绍和安装配置 3. 全文检索测试 渲染商品搜索结果 1. 准备商品搜索结果页面 商品详情页分析和准备 3. 商品详情页初步渲染 展示详情页数据 1. 查询和渲染SKU详情信息 3. 查询和渲染详情、包装和售后信息 商品详情页 统计分类商品访问量 设计浏览记录存储方案 1. 存储数据说明 保存和查询浏览记录 1. 保存用户浏览记录 商品 购物车存储方案 1. 登录用户购物车存储方案 购物车管理 添加购物车 展示商品页面简单购物车 订单 结算订单 1. 结算订单逻辑分析 4.结算订单页面渲染 创建订单数据库表 2. 订单模型类迁移建表 保存订单基本信息和订单商品信息 2. 保存订单基本信息 使用事务保存订单数据 1. Django中事务的使用 展示用户注册页面 创建用户模块子应用 2. 查看项目导包路径 追加导包路径 2. 重新注册用户模块应用 定义用户模型类 2. Django默认用户模型类 用户注册业务逻辑分析 用户注册接口设计和定义 1. 设计接口基本思路 2. 用户注册接口设计 提交订单 使用乐观锁并发下单 1. 并发下单问题演示和解决方案 3. MySQL事务隔离级别 展示提交订单成功页面 我的订单 订单支付功能 保存订单支付结果 评价订单商品 详情页展示评价信息 支付 页面静态化 MySQL读写分离 性能优化 状态保持 1. login()方法介绍 3. 查看状态保持结果 用户名重复注册 1. 用户名重复注册逻辑分析 图形验证码逻辑分析 容联云通讯短信平台 2. 容联云通讯短信SDK测试 3. 封装发送短信单例类 短信验证码后端逻辑 1. 短信验证码接口设计 补充注册时短信验证逻辑 避免频繁发送短信验证码 pipeline操作Redis数据库 1. pipeline的介绍 生产者消费者设计模式 RabbitMQ介绍和使用 3. 新建administrator用户 4. RabbitMQ配置远程访问 Celery介绍和使用 2. 创建Celery实例并加载配置 4. 启动Celery服务 5. 调用发送短信任务 6. 补充celery worker的工作模式 异步方案RabbitMQ和Celery 验证码 账号登录 用户名登录 3. 用户名登录接口定义 首页用户名展示 2. 用户名写入到cookie 3. Vue渲染首页用户名 退出登录 判断用户是否登录 1. 展示用户中心界面 2. is_authenticate
判断用户是否登录 3. login_required装饰器
判断用户是否登录 4. 登录时next参数的使用 1. 定义模型类基类 OAuth2.0认证获取openid 2. 接收Authorization Code 4. 本机绑定www.meiduo.site域名 openid是否绑定用户的处理 1. 判断openid是否绑定过用户 4. 补充itsdangerous的使用 用户基本信息 添加邮箱后端逻辑 3. 判断用户是否登录并返回JSON Django发送邮件的配置 2. 准备发邮件服务器 发送邮箱验证邮件 1. 定义和调用发送邮件异步任务 2. 生成邮箱验证链接 添加和验证邮箱 省市区三级联动 2. 准备省市区模型和数据
完整笔记资料代码:https://gitee.com/yinuo112/Backend/tree/master/Django/前后端...
感兴趣的小伙伴可以自取哦~
全套教程部分目录:
部分文件图片:
欢迎来到美多商城!
项目需求分析
需求分析原因:
- 可以整体的了解项目的业务流程和主要的业务需求。
- 项目中,需求驱动开发。即开发人员需要以需求为目标来实现业务逻辑。
需求分析方式:
- 企业中,借助 产品原型图 分析需求。
- 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应的业务及响应处理。
需求分析内容:
- 页面及其业务流程和业务逻辑。
提示:
- 我们现在借助 示例网站 作为原型图来分析需求。
1. 项目主要页面介绍
1.首页广告
2.注册
3.登录
4.登录
5.个人信息
6.收货地址
7.我的订单
8.修改密码
9.商品列表
10.商品搜索
11.商品详情
12.购物车
13.结算订单
14.提交订单
15.支付
16.支付结果处理
17.订单商品评价
2. 归纳项目主要模块
为了方便项目管理及多人协同开发,我们根据需求将功能划分为不同的模块。
将来在项目中,每个模块
都会对应一个子应用
进行管理和解耦
。
模块 | 功能 |
---|---|
验证 | 图形验证、短信验证 |
用户 | 注册、登录、用户中心 |
第三方登录 | 登录 |
首页广告 | 首页广告 |
商品 | 商品列表、商品搜索、商品详情 |
购物车 | 购物车管理、购物车合并 |
订单 | 确认订单、提交订单 |
支付 | 支付、订单商品评价 |
MIS系统 | 数据统计、用户管理、权限管理、商品管理、订单管理 |
3. 知识要点
- 需求分析原因:需求驱动开发。
- 需求分析方式:企业中,使用产品原型图。
- 需求分析内容:页面及业务逻辑。
- 需求分析结果:划分业务模块,明确每个模块下的主要功能,并以子应用的形式进行管理。
项目架构设计
1. 项目开发模式
选项 | 技术选型 |
---|---|
开发模式 | 前后端不分离 |
后端框架 | Django + Jinja2模板引擎 |
前端框架 | Vue.js |
说明:
- 前后端不分离的开发模式,是为了提高搜索引擎排名,即SEO。特别是首页,详情页和列表页。
- 页面需要整体刷新:我们会选择使用Jinja2模板引擎来实现。
- 页面需要局部刷新:我们会选择使用Vue.js来实现。
2. 项目运行机制
3. 知识要点
项目开发模式
- 前后端不分离,方便SEO。
- 采用Django + Jinja2模板引擎 + Vue.js实现前后端逻辑。
项目运行机制
- 服务:Nginx服务器(反向)
- 静态服务:Nginx服务器(静态首页、商品详情页、...)
- 动态服务:uwsgi服务器(美多商场业务场景)
- 后端服务:MySQL、Redis、Celery、RabbitMQ、Docker、FastDFS、Elasticsearch、Crontab
- 外部接口:容联云、互联、
项目介绍
创建工程
美多商城项目源代码采用远程仓库托管
。
1. 准备项目代码仓库
1.源码托管网站
码云([
2.创建源码远程仓库:meiduo_project
2. 克隆项目代码仓库
1.进入本地项目目录
$ mkdir ~/projects
$ cd projects/
2.克隆仓库
$ git clone
3. 创建美多商城工程
1.进入本地项目仓库
$ cd ~/projects/meiduo_project/
2.创建美多商城虚拟环境,安装Django框架
$ mkvirtualenv -p python3 meiduo_mall
$ pip install django==1.11.11
3.创建美多商城Django工程
$ django-admin startproject meiduo_mall
创建工程完成后:运行程序,测试结果。
配置开发环境
美多商城项目的环境分为开发环境
和生产环境
。
- 开发环境:用于编写和调试项目代码。
- 生产环境:用于项目线上部署运行。
1. 新建配置文件
准备配置文件目录
- 新建包,命名为settings,作为配置文件目录
准备开发和生产环境配置文件
- 在配置包settings中,新建开发和生产环境配置文件
准备开发环境配置内容
- 将默认的配置文件settings.py中内容拷贝至dev.py
2. 指定开发环境配置文件
配置完成后:运行程序,测试结果。
配置Jinja2模板引擎
美多商城的模板采用Jinja2模板引擎
。
1. 安装Jinja2扩展包
$ pip install Jinja2
2. 配置Jinja2模板引擎
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2', # jinja2模板引擎
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
3. 补充Jinja2模板引擎环境
1.创建Jinja2模板引擎环境配置文件
2.编写Jinja2模板引擎环境配置代码
from jinja2 import Environment
from django.contrib.staticfiles.storage import staticfiles_storage
from django.urls import reverse
def jinja2_environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
"""
确保可以使用模板引擎中的{{ url('') }} {{ static('') }}这类语句
"""
3.加载Jinja2模板引擎环境
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2', # jinja2模板引擎
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
# 补充Jinja2模板引擎环境
'environment': 'meiduo_mall.utils.jinja2_env.jinja2_environment',
},
},
]
配置完成后:运行程序,测试结果。
配置MySQL数据库
美多商城数据存储服务采用MySQL数据库
。
1. 新建MySQL数据库
1.新建MySQL数据库:meiduo_mall
$ create database meiduo charset=utf8;
2.新建MySQL用户
$ create user itheima identified by '123456';
3.授权itcast
用户访问meiduo_mall
数据库
$ grant all on meiduo.* to 'itheima'@'%';
4.授权结束后刷新特权
$ flush privileges;
2. 配置MySQL数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。