抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

python的Django框架之美多商场实战

注意⚠️:本项目文件和数据库已更新,之前没配置成功或者后台管理进不去的同学请重新下载

0.介绍

0.1 美多商场项目包括以下条目

  • 美多商场的前端(vue)
  • 美多商场的后端(django)
  • 美多商场的后台管理的前端(vue)

功能介绍:

模块 功能
验证 图形验证、短信验证
用户 注册、登录、用户中心(基本信息、邮箱激活、收货地址、我的订单、修改密码)
第三方登录 QQ登录(不可以的话就用微博登录)
首页广告 首页广告
商品 商品列表、商品搜索、商品详情、商品浏览记录
购物车 购物车管理、购物车合并
订单 确认订单、提交订单、订单商品评价
支付 支付宝支付
MIS系统 数据统计、用户管理、权限管理、商品管理、订单管理

0.2 美多商场后端涉及到的知识点

  • 项目开发版本管理用到的git

  • 工程创建使用到的虚拟环境virtualenv

  • 关系型数据库MySQL

  • 缓存数据库Redis

  • 修改host文件设置本地域名

  • captcha图形验证码拓展包

  • Celery异步任务队列

  • 调用第三方API发送短信

  • 调用自己的邮箱服务发送邮箱验证

  • 文件存储方案FastDFS

  • 方便的服务载具Docker

  • 全文检索方案Elasticsearch

  • Haystack扩展建立索引

  • 支付宝API接入

  • Django项目的运行服务器uwsgi

0.3 做好无限解决bug和接收新知识的准备

python 包相关命令

1
2
3
4
5
6
7
# 查看安装的python包
pip list
# 安装包
pip install <包名>
# 卸载包
pip uninstall <包名>

1.配置环境

1.1 安装配置虚拟环境(非必要,但推荐)

安装

安装虚拟环境的命令:(linux)

1
2
sudo pip install virtualenv
sudo pip install virtualenvwrapper

win环境:

1
2
sudo pip install virtualenv
sudo pip install virtualenvwrapper-win

创建虚拟环境

1
2
3
mkvirtualenv 虚拟环境名称
例 :
mkvirtualenv py_django

指定python版本创建虚拟环境

1
2
3
mkvirtualenv -p python3 虚拟环境名称
例 :
mkvirtualenv -p python3 py3_django

查看虚拟环境

1
workon

使用(进入)虚拟环境

1
2
3
4
workon 虚拟环境名称

例 :使用py3_django的虚拟环境
workon py3_django

可以看到以下情况就是在虚拟环境里

image-20220621235052444

退出虚拟环境

1
deactivate

删除虚拟环境的命令

1
2
3
4
rmvirtualenv 虚拟环境名称

先退出:deactivate
再删除:rmvirtualenv

1.2 安装项目所需要的包(必要)

django

1
pip install django==3.2.9

mysql相关

1
2
pip install mysqlclient
pip install pymysql

redis相关

1
pip install django-redis

CORS跨域相关

1
pip install django-cors-headers

处理图片相关

1
pip install Pillow

异步队列处理任务相关

1
2
pip install -U Celery
pip install eventlet

QQ登录相关

1
pip install QQLoginTool

用户认证相关

1
2
3
4
pip install itsdangerous==2.0.1
pip install djangorestframework==3.13.1
pip install djangorestframework-jwt==1.11.0
pip install pycryptodomex

FastDFS文件存储相关

1
2
3
pip install py3Fdfs
pip install mutagen
pip install requests

Elasticsearch全文搜索相关

1
2
pip install django-haystack
pip install elasticsearch==2.4.1

crontab定时任务相关

1
pip install django-crontab

支付宝API相关

1
pip install python-alipay-sdk --upgrade

uwsgi相关(非必要)

1
pip install uwsgi

如果安装完必要的包运行项目时还是报缺少模块的话,可以参考我的环境内的包,安装报错时缺少的模块即可
务必按对应版本安装,防止兼容问题

本人环境内的包及版本号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
alipay==0.7.4
amqp==5.1.0
asgiref==3.5.0
billiard==3.6.4.0
celery==5.2.3
certifi==2021.10.8
cffi==1.15.0
charset-normalizer==2.0.12
click==8.0.4
click-didyoumean==0.3.0
click-plugins==1.1.1
click-repl==0.2.0
cryptography==36.0.2
Deprecated==1.2.13
Django==3.2.9
django-cors-headers==3.11.0
django-crontab==0.7.1
django-haystack==3.1.1
django-redis==5.2.0
djangorestframework==3.13.1
djangorestframework-jwt==1.11.0
DjangoUeditor==1.8.143
elasticsearch==2.4.1
fdfs-client-py @ file:///Users/wskice/Documents/%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%99%28%E6%80%BB%E5%92%8C%29/%E7%BE%8E%E5%A4%9A%E5%95%86%E5%9C%BA%E8%B5%84%E6%96%99/%E5%90%8E%E7%AB%AF%E8%B5%84%E6%96%99/fdfs_client-py-master.zip
future==0.18.2
idna==3.3
itsdangerous==2.0.1
kombu==5.2.4
lxml==4.8.0
mutagen==1.45.1
packaging==21.3
Pillow==9.0.1
prompt-toolkit==3.0.28
pycparser==2.21
pycryptodomex==3.9.4
PyJWT==1.7.1
PyMySQL==1.0.2
pyOpenSSL==19.1.0
pyparsing==3.0.7
python-alipay-sdk==3.0.4
pytz==2021.3
QQLoginTool==0.3.0
redis==4.1.4
requests==2.27.1
ronglian-sms-sdk==1.0.0
six==1.16.0
sqlparse==0.4.2
urllib3==1.26.9
uWSGI==2.0.20
vine==5.0.0
wcwidth==0.2.5
wrapt==1.14.0

使用虚拟环境安装包出错直接了当的解决方案

直接下载已经配置好的虚拟环境包

点击下载py3_meiduo虚拟环境包

里边是测试好的虚拟环境包,放到自己电脑的环境文件夹里就可以使用此虚拟环境了

将下载好的包放入存放虚拟环境的目录内

windows:C:/Users/<用户名>/Enve

image-20220625021657021

image-20220625021758135

测试虚拟环境:

1
workon py3_meiduo

1.3 配置host文件,设置本地域名(必要)

找到自己电脑的host文件,添加以下条目

1
127.0.0.1   www.meiduo.site

windows系统的host文件路径

1
C:\Windows\System32\drivers\etc\hosts

Linux or Mac 系统的host文件路径

1
/etc/hosts

用于在本地虚拟一个域名

1.4 安装配置MySQL数据库(必要)

windows系统:

1.去下载mysql官网安装包

2.安装

3.配置全局变量

此电脑右键->属性->关于->高级系统设置->选择高级菜单->环境变量->在系统变量栏->找到变量为Path的项点编辑->新建->填入系统的mysql/bin的目录->确定

1.5 安装配置Redis数据库(必要)

1.去下载redis——widnows安装包

2.安装

1.6 安装docker(非必要,不愿尝试本地部署的同学可省略)

官网连接下载 Docker Desktop

一直下一步无脑安装

1.7 用docker安装并启用FastDFS(非必要,不愿尝试本地部署的同学可省略)

—–以下命令为Linux命令,Windows将sudo取消即可,但Windows启动终端时请以管理员身份运行—–

1.拉取镜像(下载服务):

1
sudo docker image pull delron/fastdfs

拉取不下来的同学可以选择直接下载镜像进行安装

链接: https://pan.baidu.com/s/1eylY7NeHV8dFMH3PDT4Ybg?pwd=vlnj

提取码: vlnj

1
2
3
sudo docker load -i 文件路径/fastdfs_docker.tar
# win:
docker load -i 文件路径/fastdfs_docker.tar

2.创建容器

2.1 创建Tracker进程(fastDFS文件存储服务的守护进程)

将 Tracker 运行目录映射到自己电脑的指定目录中,此目录可以自行决定,因为映射了目录就放方便管理服务

目录中的文件 ——> 点此下载

1
2
# 命令解析:docker run -dit(后台持久化运行) --name tracker --network=host(使用本地网络环境) -v(映射目录) <容器内的目录>:<容器外的目录> delron/fastdfs tracker
sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker

2.2 创建storage进程(fastDFS文件存储服务的存储进程)

  • TRACKER_SERVER=Tracker的ip地址:22122(Tracker的ip地址不要使用127.0.0.1,使用自己电脑所在网段ip
  • 我们将 storage 运行目录映射到自己电脑的指定目录中,此目录可以自行决定,这个是fastDFS服务用于存放数据文件的目录
  • 目录中的文件 ——> 点此下载
1
2
# 命令解析:docker run(使用镜像启动容器) -dit(后台持久化运行) --name storage(服务命名) --network=host(使用本地网络环境) -v(映射目录) <容器内的目录>:<容器外的目录> delron/fastdfs(镜像名称) storage(镜像内的服务名称)
sudo docker run -dti --name storage --network=host -e TRACKER_SERVER=192.168.1.xxx:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage

注意⚠️:将Tracker服务的ip更改为自己电脑所在妄断ip(例:192.168.1.xxx)

docker启动服务说明:

  • run (启动容器)
  • -dit (后台持久化运行)
  • –name storage(给服务命名,可自定义)
  • –network=host (使用本地网络环境)
  • -v(映射目录) <容器内的目录>:<容器外的目录>

1.8 使用docker安装配置Elasticsearch-ik(非必要,可尝试)

1.拉取镜像(下载服务)

1
2
# 从云仓库拉取镜像
sudo docker image pull delron/elasticsearch-ik:2.4.6-1.0

新建一个目录用于映射elasticsearch服务的配置文件目录,建议和项目文件夹放一起

2.创建容器并启动容器(启动服务)

2.1 修改elasticsearch.yml文件,此文件在elasticsearch/config目录里

elasticsearch/config目录我已经打包好了 ——> 点击下载

下载下来后找到elasticsearch/config目录里的elasticsearch.yml文件,修改network.host字段,大概在54行

修改成自己电脑所在网段的真实ip地址

1
network.host: 192.158.1.xxx

2.2 启动服务

1
sudo docker run -dti --name=elasticsearch --network=host -v <自己电脑的elasticsearch/config目录>:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0

这个操作同上两步我就不过多解释了

1.6、1.7、1.8步骤操作完成的同学请在终端输入(windows系统去掉sudo)

sudo docker ps

查看docker的容器(也就是服务)有没有正常在运行

如果正常的话应该有类似以下的样子

image-20220622015651956

2.启动服务

2.1 下载项目相关文件

美多商场Django项目

美多商场前端

美多后台管理前端

美多MySQL数据

项目整合下载(推荐)

2.2 导入mysql数据库

先下载美多MySQL数据

1.创建meiduodb数据库

1
2
3
4
5
6
# 先进入数据库
mysql -uroot -p123456
# 创建数据库
create databses meiduodb charset=utf8;
# 退出数据库
exit

2.导入.sql数据文件

先进到存放.sql数据文件的文件夹目录,在当前目录打开终端,再输入以下命令

1
mysql -uroot -p123456 meiduodb < meiduodb.sql

2.3 修改项目配置

1.mysql

找到项目根目录meiduo/settings.py 文件

找到database字段,修改成自己的

1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'meiduodb', # 数据库名称
'HOST': '127.0.0.1', # 数据库ip
'PORT': '3306', # mysql端口
'USER': 'root', # 数据库用户
'PASSWORD': '123456' # 数据库密码
}
}

2.redis

找到项目根目录meiduo/settings.py 文件

找到CACHES字段

(如果安装完redis没修改过配置,以下就是默认配置,项目中已写入默认配置)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# redis数据库配置
CACHES = {
'default': { # 默认
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/0', # redis 地址和数据库名
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
},
"code": { # 验证码
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
'session': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/2',
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
},
"history": { # 用户浏览记录
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/3",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
"carts": { # 购物车记录
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/4",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}

3.FastDFS存储地址(没修改,非必要)

找到项目根目录下utils/fastdfs/client.conf 文件

找到base_path字段,修改成自己的日志目录

找到tracker_server修改为自己服务的地址

1
2
3
4
5
6
7
8
# the base path to store log files
# FastDFS客户端存放日志的目录log
base_path=/Users/wskice/Desktop/logs/

# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
# tracker_server=150.158.98.192:22122
tracker_server=150.158.98.192:22122

找到项目根目录meiduo/settings.py 文件

修改FDFS_BASE_URL字段

1
2
# FastDFS相关参数
FDFS_BASE_URL = 'http://150.158.98.192:8888/' # 修改成自己的url

4.修改elasticsearch搜索引擎地址(没修改,非必要)

1
2
3
4
5
6
7
8
# Haystack
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://150.158.98.192:9200/', # Elasticsearch服务器ip地址,端口号固定为9200
'INDEX_NAME': 'meiduodb', # Elasticsearch建立的索引库的名称
},
}

2.3 启动项目

检查数据库:

检查mysql数据库是否启动:

1
2
mysql -uroot -p
# 输入密码

检查redis数据是否启动:

1
redis-cli

出现以下情况就说明启动好了

image-20220625020204184

如果没有出现以上情况,请重新启动,打开终端输入如下命令启动

1
redis-server

后端:

进入meiduo目录

1
2
3
4
5
6
# 进入美多django项目目录
cd ./meiduo
# 进入虚拟环境
workon py3_meiduo # 用自己的虚拟环境名字
# 启动项目
python manage.py runserver

启动项目报缺少包的同学,给你一个终极解决方案

新建终端窗口 启动celery异步任务队列

1
2
3
4
# 进入美多django项目目录
cd ./meiduo
# 先进入项目目录再执行以下代码
celery -A celery_tasks.main worker -l info

前端:

进入front_end_pc目录

1
2
3
cd ./front_end_pc
# 使用python自带的web小服务器启动服务
python3 -m http.server 8080

启动好后在浏览器输入以下地址访问:

1
http://www.meiduo.site:8080

后台管理(meiduo_admin)的前端:

1
2
3
cd ./meiduo_admin
# 使用python自带的web小服务器启动服务
python3 -m http.server 8090

启动好后在浏览器输入以下地址访问:

1
http://www.meiduo.site:8090

2.4 访问页面

1
2
3
4
# 主页
www.meiduo.site:8080
# 后台管理页
www.meiduo.site:8090

剩下的就自己研究吧

已注册账号

1
2
3
4
5
6
7
8
9
管理员账户
user:haiming
password:Tomorrow

user:18775225119
password:Tomorrow

user:aaaaaaaa
password:aaaaaaaa

3.云服务器部署

评论