【美多商城项目01】了解主要需求和架构设计,创建配置工程
一、美多商城项目介绍
1.1 项目需求分析
需求分析原因
- 项目中,需求驱动开发,即开发人员需要以需求为目标来实现业务逻辑。
需求分析方式
- 企业中,借助产品原型图分析需求。
- 需求分析完后,前端按照产品原型图开发前端页面,后端开发对应的业务及响应处理。
- 提示:我们现在假借示例网站作为原型图来分析需求。
需求分析内容
- 页面及页面上的业务逻辑。
- 归纳业务逻辑并划分模块。
1. 项目主要页面介绍
1.首页广告
2.注册
3.登录
4.QQ登录
5.个人信息
6.收货地址
7.我的订单
8.修改密码
9.商品列表
10.商品搜索
11.商品详情
12.购物车
13.结算订单
14.提交订单
15.支付宝支付
16.支付结果处理
17.订单商品评价
2. 归纳项目主要模块
模块 | 功能 |
---|---|
验证 | 图形验证、短信验证 |
用户 | 注册、登录、用户中心(基本信息、邮箱激活、收货地址、我的订单、修改密码) |
第三方登录 | QQ登录 |
首页广告 | 首页广告 |
商品 | 商品列表、商品搜索、商品详情、商品浏览记录 |
购物车 | 购物车管理、购物车合并 |
订单 | 确认订单、提交订单、订单商品评价 |
支付 | 支付宝支付 |
MIS系统 | 数据统计、用户管理、权限管理、商品管理、订单管理 |
3. 知识要点
- 需求分析原因:需求驱动开发。
- 需求分析方式:企业中,使用原型图分析需求。
- 需求分析内容:了解页面及业务逻辑,归纳业务模块。
- 需求分析结果:划分业务模块,明确每个模块下的主要功能。
1.2 项目架构设计
1. 项目开发模式
选项 | 技术选型 |
---|---|
开发模式 | 前后端分离 |
后端框架 | Django |
前端框架 | Vue.js |
说明:
- 页面需要局部刷新:我们会选择使用Vue.js来实现。
2. 项目架构设计
3. 知识要点
项目主要架构
- 帮助我们整体把握项目的工作流程和主要的业务场景。
- 项目开发时,明确工作的重心是实现后端业务逻辑。
二、工程创建和配置
2.1 创建工程
1. 准备项目代码仓库
1.源码托管网站
- 码云(https://gitee.com/)
2.创建源码远程仓库:meiduo_project
2. 克隆项目代码仓库
1.进入本地项目目录
cd Desktop/
2.克隆仓库
git clone https://gitee.com/itcastitheima/meiduo_project.git
3. 创建美多商城工程
1.进入本地项目仓库
cd meiduo_project/
2.创建美多商城虚拟环境,安装Django框架
$ mkvirtualenv -p python3 meiduo_mall
$ pip install django==2.2.5
3.创建美多商城Django工程
$ django-admin startproject meiduo_mall
创建工程完成后:运行程序,测试结果。
2.2 配置开发目录
libs 存放第三方的库文件
utils 存放项目自己定义的公共函数或类等
apps 存放Django的应用
templates 模板文件存放文件夹
2.3 运行前端
前端的用户部分. 使用我们给大家发的 front_end_pc 文件夹充当
即. front_end_pc 文件夹中的内容都是前端的部分.
想要将 front_end_pc 中的内容启动起来, 我们需要使用 python 自带的一个小服务器来进行. 该小服务器的启动方式为:
# 进入 front_end_pc 所在的文件夹
cd front_end_pc# 启动小服务器. 端口8080
python3 -m http.server 8080
启动以后, 我们就可以使用该小服务器把 front_end_pc 中的前端代码运行起来. 启动后的端口是8080端口.
大家需要打开浏览器, 然后访问:
http://127.0.0.1:8080即可以看到front_end_pc 中的前端内容了.
2.4 配置MySQL数据库
1. 新建MySQL数据库
1.新建MySQL数据库:meiduo_mall
$ create database meiduo_mall charset=utf8;
2.新建MySQL用户
$ create user itcast identified by '123456';
3.授权
itcast
用户访问meiduo_mall
数据库
$ grant all on meiduo_mall.* to 'itcast'@'%';
4.授权结束后刷新特权
$ flush privileges;
2. 配置MySQL数据库
文档
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', # 数据库引擎'HOST': '127.0.0.1', # 数据库主机'PORT': 3306, # 数据库端口'USER': 'itcast', # 数据库用户名'PASSWORD': '123456', # 数据库用户密码'NAME': 'meiduo_mall' # 数据库名字},
}
3. 安装mysqlclient扩展包
1.安装驱动程序
$ pip install mysqlclient
配置完成后:运行程序,测试结果。
2.5 配置Redis数据库
1. 安装django-redis扩展包
1.安装django-redis扩展包
$ pip install django-redis
2.django-redis使用说明文档
点击进入文档
2. 配置Redis数据库
CACHES = {"default": { # 默认"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}},"session": { # session"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://127.0.0.1:6379/1","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",}},
}
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"
default:
- 默认的Redis配置项,采用0号Redis库。
session:
- 状态保持的Redis配置项,采用1号Redis库。
SESSION_ENGINE
- 修改
session存储机制
使用Redis保存。SESSION_CACHE_ALIAS:
- 使用名为"session"的Redis配置项存储
session数据
。配置完成后:运行程序,测试结果。
2.6 配置工程日志
文档
1. 配置工程日志
LOGGING = {'version': 1,'disable_existing_loggers': False, # 是否禁用已经存在的日志器'formatters': { # 日志信息显示的格式'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'},'simple': {'format': '%(levelname)s %(module)s %(lineno)d %(message)s'},},'filters': { # 对日志进行过滤'require_debug_true': { # django在debug模式下才输出日志'()': 'django.utils.log.RequireDebugTrue',},},'handlers': { # 日志处理方法'console': { # 向终端中输出日志'level': 'INFO','filters': ['require_debug_true'],'class': 'logging.StreamHandler','formatter': 'simple'},'file': { # 向文件中输出日志'level': 'INFO','class': 'logging.handlers.RotatingFileHandler','filename': os.path.join(BASE_DIR, 'logs/meiduo.log'), # 日志文件的位置'maxBytes': 300 * 1024 * 1024,'backupCount': 10,'formatter': 'verbose'},},'loggers': { # 日志器'django': { # 定义了一个名为django的日志器'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志'propagate': True, # 是否继续传递日志信息'level': 'INFO', # 日志器接收的最低日志级别},}
}
2. 准备日志文件目录
3. 日志记录器的使用
不同的应用程序所定义的日志等级可能会有所差别,分的详细点的会包含以下几个等级:
- FATAL/CRITICAL = 重大的,危险的
- ERROR = 错误
- WARNING = 警告
- INFO = 信息
- DEBUG = 调试
- NOTSET = 没有设置
import logging# 创建日志记录器
logger = logging.getLogger('django')
# 输出日志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')
4. Git记录工程日志
提示1:
- 开发过程中,产生的日志信息不需要代码仓库进行管理和记录。
提示2:
- 建立代码仓库时,生成的忽略文件中已经默认忽略掉了*.log。
问题:
- logs文件目录需求被Git仓库记录和管理。
- 当把
*.log
都忽略掉后,logs文件目录为空。- 但是,Git是不允许提交一个空的目录到版本库上的。
解决:
- 在空文件目录中建立一个.gitkeep文件,然后即可提交。
配置完成后:运行程序,测试结果。
5. 知识要点
- 本项目最低日志等级设置为:INFO
- 创建日志记录器的方式:
logger = logging.getLogger('django')
- 日志记录器的使用:
logger.info('测试logging模块info')
- 在日志
loggers
选项中可以指定多个日志记录器
2.7 配置访问域名
设置访问域名
位置 | 域名 |
---|---|
前端 | www.meiduo.site |
编辑/etc/hosts
文件,可以设置本地域名
sudo vim /etc/hosts
在文件中增加信息
127.0.0.1 www.meiduo.site
1.ubuntu系统或者Mac系统
2.Windows系统
编辑 C:\Windows\System32\drivers\etc\hosts
我们在前端js目录中,创建host.js文件用以为前端保存后端域名
var host = 'http://www.meiduo.site:8000';
设置allowed_hosts
#允许哪些主机访问
ALLOWED_HOSTS = ['127.0.0.1','www.meiduo.site']
【美多商城项目01】了解主要需求和架构设计,创建配置工程相关推荐
- python美多商城项目百度网盘_美多商城项目(七)
正文共: 7620字 4图 预计阅读时间: 20分钟 每日分享 If you can change your mind, you can change your life. 如果你愿意改变你的想法,你 ...
- python美多商城项目百度网盘_美多商城项目(六)
正文共: 4850字 4图 预计阅读时间: 13分钟 每日分享 Never let success get to your head, and never let failure get to you ...
- 2 大数据电商数仓项目——项目需求及架构设计
2 大数据电商数仓项目--项目需求及架构设计 2.1 项目需求分析 用户行为数据采集平台搭建. 业务数据采集平台搭建. 数据仓库维度建模(核心):主要设计ODS.DWD.DWS.AWT.ADS等各个层 ...
- 大数据项目之电商数仓、数据仓库概念、项目需求及架构设计
文章目录 1.数据仓库概念 2. 项目需求及架构设计 2.1 项目需求分析 2.1.1 采集平台 2.1.2 离线需求 2.1.3 实时需求 2.1.4 思考题 2.2 项目框架 2.2.1 技术选型 ...
- 尚硅谷数据仓库实战之1项目需求及架构设计
尚硅谷数据仓库实战之1项目需求及架构设计 第2章 项目需求及架构设计 需求分析 项目框架 技术选型 数据流程设计 框架版本选型 服务器选型 集群规模 集群资源规划设计 第3章 数据生成模块 目标数据 ...
- Django3+Vue美多商城项目的总结
文章目录 项目说明 主要环境搭建 主要技术实现 django 的配置文件 celery的使用(异步发送短信验证码和邮箱验证链接) 容联云通讯短信平台 QQ登录 jwt实现加密解密验证实现数据的安全性 ...
- Django框架之美多商城项目
后续技术类文档更新到微信公众号-------->>喜欢的扫码关注 美多商城 1. 项目的准备 - 分析商业模式:B2C- 开发流程- 项目的架构- 创建工程- 配置 2. 登录模块 2.1 ...
- 美多商城项目之用户登录:账号登录、QQ登录
一.账号登录 1.1 用户名登录 1. 用户名登录逻辑分析 2. 用户名登录接口设计 1.请求方式 选项 方案 请求方法 POST 请求地址 /login/ 2.请求参数:表单 参数名 类型 是否必传 ...
- 美多商城项目订单和支付模块总结
订单完成 订单结算页面 订单展示用的序列化器 # 前端需要运费数据和商品信息数据的字典列表,这里使用嵌套序列化器返回数据 class CartSKUSerializer(serializers.Mod ...
最新文章
- 正则匹配出字符串中两串固定字符区间的所有字符
- 关于jConfirm回传的解决方案
- ad域推送软件_Python3.6.4 软件安装教程
- vmware esxi 5.1 开启嵌套虚拟化
- Mybatis中的@Param注解
- 寻找区域中有几个点 叉乘+二分 poj 2318
- html简单网页代码表白_表白网页代码,不会代码也可以操作,告别单身
- Java静态方法调用非静态方法
- spring mysql事物级别_mysql事务级别和spring中应用
- Linux 命令(27)—— echo 命令
- 关于.dll' could not be found 的问题以及解决方案
- Red5边源服务器集群部署
- 宇宙最全的架构开发技术百科全书
- ffmpeg 音乐循环_Android使用FFmpeg(四)--ffmpeg实现音频播放(使用AudioTrack进行播放)
- EXCEL的去重去除某个字段后全部操作
- windows补丁修复
- Google浏览器自动翻译失灵
- Ubuntu 18.04 登录界面鼠标键盘鼠标失灵解决方法
- YOLOv3论文中英文对照翻译
- 机械键盘插入linux系统中,机械键盘背光灯不亮,并且键盘快捷键无作用
热门文章
- GUI 图形用户界面编程实例-记事本的设计
- 阅读text2sql论文《RAT-SQL: Relation-Aware Schema Encoding and Linking for Text-to-SQL Parsers》
- shapenet数据集_三维形状数据的深度特征表示
- 【论文阅读】基于混淆的加强网络安全的方法
- 搭建网校平台的方式有哪些?
- codeforces CodeTON Round 1 (Div. 1 + Div. 2, Rated, Prizes) Editorial前三题讲解
- 机器人坐标系基本概念
- 今日报错系列:没有找到 或上一个增量链接没有生成它;正在执行完全链接
- java怎么强制回收某个对象_4、如何强制垃圾回收一个对象?(java)
- 大疆工程师:如何利用6年时间成为一名优秀的机器人工程师