需求分析原因:
需求分析方式:
需求分析内容:
提示:
1.首页广告
2.注册
3.登录
4.QQ登录
5.个人信息
6.收货地址
7.我的订单
8.修改密码
9.商品列表
10.商品搜索
11.商品详情
12.购物车
13.结算订单
14.提交订单
15.支付宝支付
16.支付结果处理
17.订单商品评价
为了方便项目管理及多人协同开发,我们根据需求将功能划分为不同的模块。
将来在项目中,每个**模块
都会对应一个子应用
进行管理和解耦
**。
模块 | 功能 |
---|---|
验证 | 图形验证、短信验证 |
用户 | 注册、登录、用户中心 |
第三方登录 | QQ登录 |
首页广告 | 首页广告 |
商品 | 商品列表、商品搜索、商品详情 |
购物车 | 购物车管理、购物车合并 |
订单 | 确认订单、提交订单 |
支付 | 支付宝支付、订单商品评价 |
MIS系统 | 数据统计、用户管理、权限管理、商品管理、订单管理 |
选项 | 技术选型 |
---|---|
开发模式 | 前后端不分离 |
后端框架 | Django + Jinja2模板引擎 |
前端框架 | Vue.js |
说明:
项目开发模式
项目运行机制
美多商城项目源代码采用**远程仓库托管
**。
1.源码托管网站
2.创建源码远程仓库:meiduo_project
1.进入本地项目目录
$ mkdir ~/projects
$ cd projects/
2.克隆仓库
$ git clone https://gitee.com/zjsharp/meiduo_project.git
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
创建工程完成后:运行程序,测试结果。
美多商城项目的环境分为**开发环境
和生产环境
**。
准备配置文件目录
准备开发和生产环境配置文件
准备开发环境配置内容
配置完成后:运行程序,测试结果。
美多商城的模板采用**Jinja2模板引擎
**。
$ pip install 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',
],
},
},
]
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数据库
**。
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;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口
'USER': 'itheima', # 数据库用户名
'PASSWORD': '123456', # 数据库用户密码
'NAME': 'meiduo' # 数据库名字
},
}
可能出现的错误
出现错误的原因:
解决办法:
1.安装驱动程序
$ pip install PyMySQL
2.在工程同名子目录的__init__.py
文件中,添加如下代码:
from pymysql import install_as_MySQLdb
install_as_MySQLdb()
配置完成后:运行程序,测试结果。
美多商城数据缓存服务采用**Redis数据库
**。
1.安装django-redis扩展包
$ pip install django-redis
2.django-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:
session:
SESSION_ENGINE
session存储机制
使用Redis保存。SESSION_CACHE_ALIAS:
session数据
。配置完成后:运行程序,测试结果。
美多商城的日志记录采用logging模块
。
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(os.path.dirname(BASE_DIR), 'logs/meiduo.log'), # 日志文件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10,
'formatter': 'verbose'
},
},
'loggers': { # 日志器
'django': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'], # 可以同时向终端与文件中输出日志
'propagate': True, # 是否继续传递日志信息
'level': 'INFO', # 日志器接收的最低日志级别
},
}
}
import logging
# 创建日志记录器
logger = logging.getLogger('django')
# 输出日志
logger.debug('测试logging模块debug')
logger.info('测试logging模块info')
logger.error('测试logging模块error')
提示1:
提示2:
问题:
*.log
都忽略掉后,logs文件目录为空。解决:
配置完成后:运行程序,测试结果。
logger = logging.getLogger('django')
logger.info('测试logging模块info')
loggers
选项中可以指定多个日志记录器美多商城项目中需要使用静态文件,比如 css、images、js 等等。
STATIC_URL = '/static/'
# 配置静态文件加载路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
配置完成后:运行程序,测试结果。
44)]
配置完成后:运行程序,测试结果。
logger = logging.getLogger('django')
logger.info('测试logging模块info')
loggers
选项中可以指定多个日志记录器美多商城项目中需要使用静态文件,比如 css、images、js 等等。
[外链图片转存中…(img-zRARQxlT-1704279314144)]
[外链图片转存中…(img-XwauAsKP-1704279314144)]
STATIC_URL = '/static/'
# 配置静态文件加载路径
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
配置完成后:运行程序,测试结果。