1.架构设计
1.需求分析原因:
为了方便项目管理及多人协同开发,我们根据需求将功能划分为不同的模块。
将来在项目中,每个模块都会对应一个子应用进行管理和解耦。
模块 功能
用户: 注册、登录、用户中心
验证: 图形验证、短信验证
第三方登录: QQ登录
首页广告: 首页广告
商品: 商品列表、商品搜索、商品详情
购物车: 购物车管理、购物车合并
订单: 确认订单、提交订单
支付: 支付宝支付、订单商品评价
MIS系统: 数据统计、用户管理、权限管理、商品管理、订单管理
选项 技术选型
开发模式:前后端不分离
后端框架: Django+ Jinja22模板引擎
前端框架: Vue.js
说明:
源码托管网站:码云( https://gitee.com/ )
首先打开码云的网站https://gitee.com/,注册账户。已有账户的可以直接登录。
打开git官网https://git-scm.com/downloads,选择操作系统,下载客户端。(原则上点了下图所示的windows后即会自动下载。如果没有自动下载,则可以在这个网页https://git-scm.com/download/win手动点击下载。)
下载后双击这exe文件,开始安装,可以一路下一步,进行安装。有需要的可以自己调整设置。
安装完成后,在开始菜单里找到Git中的Git Bash,点击打开,会出来一个类似命令行窗口的东西,这说明Git成功安装了。
然后可以用下面所示的命令配置用户名和邮箱,也可以先跳过。
git config --global user.name "yuetaope"
git config --global user.email "13953800865@163.com"
如果配置了,配置后可以查询配置情况。
git config -l
https://gitee.com/yuetaope/meiduo_project.git
1、启动 Git Bash
2、切换当前路径到e:\projects
3、执行克隆代码
git clone https://gitee.com/yuetaope/meiduo_project.git
4、输入码云的用户名和密码,执行克隆‘
5、查看本地文件
任何的增加、删除、修改操作都会显示在更改中
在gitee项目中创建虚拟环境
E:\projects\meiduo_project> virtualenv meiduo_mall
E:\projects\meiduo_project> cd meiduo_mall
E:\projects\meiduo_project\meiduo_mall> scripts\activate
(meiduo_mall) PS E:\projects\meiduo_project\meiduo_mall>pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django==2.2.9
一定注意最后有个. 代表在当前目录meiduo_mall 创建meiduo_mall 这个项目,否则会再生成下级目录meiduo_mall
(meiduo_mall) PS E:\projects\meiduo_project\meiduo_mall> django-admin startproject meiduo_mall .
创建后的目录结构如下
克隆项目到本地的关键是虚拟环境的配置,直接克隆下来的环境在本机是没法运行的,所以一定要先安装虚拟环境再克隆项目。
e盘新建meiduo_project文件夹
e:\meiduo_project
cmd
virtualenv meiduo_mall
cd e:
git clone https://gitee.com/yuetaope/meiduo_project.git
删除克隆文件夹meiduo_project\meiduo_mall下的 pyvenv.cfg 文件和 scripts 文件夹
复制克隆文件夹meiduo_project下的所有文件到 meiduo_project_current 中
删除E:\meiduo_project,将 E:\meiduo_project_currrent 改为 E:\meiduo_project
配置python解释器为 E:\meiduo_project\meiduo_mall\scripts\python.exe
ctrl+shift+~,进入虚拟环境终端,pip list查看安装包
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple Django==2.2.9
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyMySQL
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cryptography
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jinja2
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pylint pylint_django
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django-redis
“E:\projects\meiduo_project\meiduo_mall\lib\site-packages\django\db\backends\mysql\operations.py” 145-147行改为
if query is not None:
query = query.encode('utf-8').decode(errors='replace')
return query
系统正常启动,克隆完成
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jinja2
目的:确保jinja2模板引擎的{{ static(‘’) }} {{ url(‘’) }} 这类语句可以使用,方便读取静态文件和做重定向
from jinja2 import Environment
from django.urls import reverse
from django.contrib.staticfiles.storage import staticfiles_storage
def jinja2_environment(**options):
""" jinja2环境 """
# 创建环境对象
env = Environment(**options)
# 自定义语法:{{ static('静态文件相对路径') }} {{ url('路由的命名空间') }}
env.globals.update({
'static': staticfiles_storage.url, # 获取静态文件的前缀
'url': reverse, # 用django的重定向函数reverse接管jinja2模板引擎的url函数,反向解析
})
# 返回环境对象
return env
OPTIONS列表中新建键值对
‘environment’: ‘meiduo_mall.utils.jinja2_env.jinja2_environment’, # 补充jinja2模板引擎环境
create database meiduo charset=utf8;
show databases;
create user yuetaope identified by ‘yuetaope’;
grant all on meiduo.* to ‘yuetaope’@‘%’;
flush privileges;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 引擎
'HOST': '127.0.0.1', # 数据库主机
'PORT': 3306, # 数据库端口号
'USER': 'yuetaope', # 数据库用户名
'PASSWORD': 'yuetaope', # 数据库密码
'NAME': 'meiduo', # 数据库名
},
}
配置完会报错
from pymysql import install_as_MySQLdb
install_as_MySQLdb()
配置完报错
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cryptography
use meiduo;
alter user ‘yuetaope’@‘%’ identified with mysql_native_password by ‘yuetaope’;
flush privileges;
配置完报错
“E:\projects\meiduo_project\meiduo_mall\lib\site-packages\django\db\backends\mysql\operations.py” 145-147行改为
if query is not None:
query = query.encode('utf-8').decode(errors='replace')
return query
系统启动,配置完成