文章目录
Django-shop项目
1 项目准备
1.1项目介绍
项目需求分析
需求分析流程
-
企业中,首先前端会借助产品原型图来分析需求
-
然后前端根据产品原型图开发前端页面,后端开发对应的业务及响应处理。
shop项目通过示例网站作为原型图来分析需求
- 模块分析
- 验证:图形验证、短信验证
- 用户:注册、登录、用户中心
- 第三方登录:QQ登录
- 首页广告:首页广告
- 商品:商品列表、商品搜索、商品详情展示
- 购物车:购物车管理、购物车合并
- 订单:确认订单、提交订单
- 支付:支付宝支付、订单商品评价
- MIS系统:数据统计、用户管理、权限管理、商品管理、订单管理
项目架构设计
项目开发模式
- 开发模式:前后端不分离
- 后端框架:Django
- 前端框架:Vue.js
项目运行机制
用户(发送请求)—> Nignx服务器(接收,并判断请求是请求什么资源文件)—>(若是动态数据请求)uwsgi服务器 —>Django(处理请求,返回响应)
1.2 工程创建和配置
准备工作
pipenv shell
pip install django==2.2
django-admin startproject django_shop
配置开发环境
# manage.py
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'lgshop.dev') # 自定义的开发环境配置文件
配置MySQL数据库
pip install mysqlclient
# dev.py
# mysql配置
DATABASES = {....}
配置Redis数据库
商城数据缓存服务采用Redis数据库
文档地址:https://django-redis-chs.readthedocs.io/zh_CN/latest/
pip install django-redis
# dev.py
# 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数据
配置工程日志
日志文件:存放一些项目运行的记录,比如用户请求信息、项目报错信息等
# dev.py
# 日志配置
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/lgshop.log'), # 日志文件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': { # 日志器
'django': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志
'propagate': True, # 是否继续传递日志信息
'level': 'INFO', # 日志器接收的最低日志级别
},
}
}
在项目目录下新建一个logs文件夹
配置前端静态文件
在项目目录下新建一个static目录
# dev.py
# 静态文件存放路径配置
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
模板文件配置
# 模板文件配置
TEMPLATES=[.....]
2 用户注册
2.1 展示用户注册页面
- 先搞定注册页面的功能,准备html,配置static,路由映射
2.2 用户模型类
- 继承Django自带的AbstractUser模型,定义数据库用户表
2.3 用户注册业务实现分析
- 对注册页面功能进行接口设计分析,
- 1 分析需要定义哪些model
- 2 编写哪些view函数/类
- 3 编写哪些form
- 4 以及请求方式分析,是否是Ajax请求数据
- 5 用户注册数据保存在哪里
- 6 用户请求状态以什么方式保存以及保存在哪里
- 分别编写上述功能的接口