|
|
|
|
# Python-Django-天天生鲜项目
|
|
|
|
|
|
|
|
|
|
初学django框架时按照传智播客python教程所学习的项目,该项目包含了实际开发中的电商项目中大部分的功能开发和知识点实践。
|
|
|
|
|
|
|
|
|
|
功能:用户注册,用户登录,购物车,用户中心,首页,订单系统,地址信息管理,商品列表,商品详情,支付功能等等,是一个完整的电商项目流程
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
python + django + mysql + redis + celery + FastDFS(分布式图片服务器) + nginx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 目标功能:
|
|
|
|
|
- [x] 功能模块
|
|
|
|
|
- [x] 用户模块
|
|
|
|
|
- [x] 注册
|
|
|
|
|
- [x] 登录
|
|
|
|
|
- [x] 激活(celery)
|
|
|
|
|
- [x] 退出
|
|
|
|
|
- [x] 个人中心
|
|
|
|
|
- [x] 地址管理
|
|
|
|
|
- [x] 商品模块
|
|
|
|
|
- [x] 首页(celery)
|
|
|
|
|
- [x] 商品详情
|
|
|
|
|
- [x] 商品列表
|
|
|
|
|
- [x] 搜索功能(haystack+whoose)
|
|
|
|
|
- [x] 购物车模块(redis)
|
|
|
|
|
- [x] 增加
|
|
|
|
|
- [x] 删除
|
|
|
|
|
- [x] 修改
|
|
|
|
|
- [x] 查询
|
|
|
|
|
- [x] 订单模块
|
|
|
|
|
- [x] 确认订单页面
|
|
|
|
|
- [x] 订单创建
|
|
|
|
|
- [x] 请求支付(支付宝)
|
|
|
|
|
- [x] 查询支付结果
|
|
|
|
|
- [x] 评论
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- 项目启动:
|
|
|
|
|
- **注意: 项目启动前请先安装好各个环境,mysql+redis+nginx+fastDFS+celery等**
|
|
|
|
|
```
|
|
|
|
|
项目包安装
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
|
|
|
|
Django启动命令
|
|
|
|
|
python manage.py runserver
|
|
|
|
|
```
|
|
|
|
|
- uwsgi web服务器启动:
|
|
|
|
|
- **注意: uwsgi开启需要修改[配置文件](./dailyfresh/settings.py)中的DEBUG和ALLOWED_HOSTS**
|
|
|
|
|
```
|
|
|
|
|
启动: uwsgi --ini 配置文件路径 / uwsgi --ini uwsgi.ini
|
|
|
|
|
停止: uwsgi --stop uwsgi.pid路径 / uwsgi --stop uwsgi.pid
|
|
|
|
|
```
|
|
|
|
|
- celery分布式任务队列启动
|
|
|
|
|
```
|
|
|
|
|
celery -A celery_tasks.tasks worker -l info
|
|
|
|
|
```
|
|
|
|
|
- redis服务端启动
|
|
|
|
|
```
|
|
|
|
|
sudo redis-server /etc/redis/redis.conf
|
|
|
|
|
```
|
|
|
|
|
- FastDFS服务启动
|
|
|
|
|
```
|
|
|
|
|
Trackerd服务
|
|
|
|
|
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
|
|
|
|
|
|
|
|
|
|
storge服务
|
|
|
|
|
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
|
|
|
|
|
```
|
|
|
|
|
- nginx
|
|
|
|
|
```
|
|
|
|
|
启动nginx
|
|
|
|
|
sudo /usr/local/nginx/sbin/nginx
|
|
|
|
|
重启nginx
|
|
|
|
|
sudo /usr/local/nginx/sbin/nginx -s reload
|
|
|
|
|
```
|
|
|
|
|
- 建立索引文件--搜索引擎
|
|
|
|
|
新环境需要配置jieba分词,生成[whoose_cn_backend]()文件
|
|
|
|
|
```
|
|
|
|
|
python manage.py rebuild_index
|
|
|
|
|
```
|
|
|
|
|
- mysql事务隔离级别设置
|
|
|
|
|
```
|
|
|
|
|
sudo vim /etc/mysql/mysql.conf.d/mysql.cnf
|
|
|
|
|
transaction-isolation = READ-COMMITTED (读已提交)
|
|
|
|
|
```
|
|
|
|
|
## 项目包介绍
|
|
|
|
|
```
|
|
|
|
|
alipay-sdk-python==3.7.137
|
|
|
|
|
amqp==5.2.0
|
|
|
|
|
asgiref==3.8.1
|
|
|
|
|
asn1crypto==0.24.0
|
|
|
|
|
async-timeout==4.0.3
|
|
|
|
|
Authlib==0.5.1
|
|
|
|
|
billiard==4.2.0
|
|
|
|
|
Brotli==1.1.0
|
|
|
|
|
celery==5.4.0
|
|
|
|
|
certifi==2024.2.2
|
|
|
|
|
cffi==1.16.0
|
|
|
|
|
chardet==3.0.4
|
|
|
|
|
charset-normalizer==3.3.2
|
|
|
|
|
click==8.1.7
|
|
|
|
|
click-didyoumean==0.3.1
|
|
|
|
|
click-plugins==1.1.1
|
|
|
|
|
click-repl==0.3.0
|
|
|
|
|
colorama==0.4.6
|
|
|
|
|
configparser==3.5.0
|
|
|
|
|
construct==2.5.3
|
|
|
|
|
cryptography==42.0.7
|
|
|
|
|
Django==3.2.13
|
|
|
|
|
django-filter==24.2
|
|
|
|
|
django-haystack==3.2.1
|
|
|
|
|
django-redis==5.4.0
|
|
|
|
|
django-redis-sessions==0.5.6
|
|
|
|
|
django-tinymce==4.0.0
|
|
|
|
|
djangorestframework==3.15.1
|
|
|
|
|
djangorestframework-jwt==1.11.0
|
|
|
|
|
haystack==0.42
|
|
|
|
|
idna==3.7
|
|
|
|
|
itsdangerous==2.2.0
|
|
|
|
|
jieba==0.42.1
|
|
|
|
|
kombu==5.3.7
|
|
|
|
|
mysqlclient==2.2.4
|
|
|
|
|
pefile==2023.2.7
|
|
|
|
|
Pillow==9.5.0
|
|
|
|
|
prompt_toolkit==3.0.45
|
|
|
|
|
pyasn1==0.6.0
|
|
|
|
|
pycparser==2.22
|
|
|
|
|
pycryptodome==3.20.0
|
|
|
|
|
pycryptodomex==3.20.0
|
|
|
|
|
pygame==2.5.2
|
|
|
|
|
PyJWT==1.7.1
|
|
|
|
|
PyMySQL==1.0.2
|
|
|
|
|
pyOpenSSL==24.1.0
|
|
|
|
|
python-alipay-sdk==3.3.0
|
|
|
|
|
python-dateutil==2.9.0.post0
|
|
|
|
|
python-ptrace==0.9.9
|
|
|
|
|
pytz==2024.1
|
|
|
|
|
redis==5.0.4
|
|
|
|
|
requests==2.32.3
|
|
|
|
|
rsa==4.9
|
|
|
|
|
six==1.16.0
|
|
|
|
|
sqlparse==0.5.0
|
|
|
|
|
typing_extensions==4.12.0
|
|
|
|
|
tzdata==2024.1
|
|
|
|
|
urllib3==2.2.1
|
|
|
|
|
vine==5.1.0
|
|
|
|
|
wcwidth==0.2.13
|
|
|
|
|
Whoosh==2.7.4
|
|
|
|
|
wincertstore==0.2.1
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
## 注意点
|
|
|
|
|
pip install fdfs_client-py-master 存在bug,需要下载特定版本
|
|
|
|
|
redis版本需要2.10.6 否则会报错,因为使用django的版本过低问题
|
|
|
|
|
如果使用乐观锁,需要修改mysql事务的隔离级别设置
|
|
|
|
|
|
|
|
|
|
## 总结
|
|
|
|
|
需求分析
|
|
|
|
|
1.1 用户模块
|
|
|
|
|
1) 注册页
|
|
|
|
|
注册时校验用户名是否已被注册。
|
|
|
|
|
完成用户信息的注册
|
|
|
|
|
给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活。
|
|
|
|
|
2)登陆页
|
|
|
|
|
实现用户的登录功能
|
|
|
|
|
3)用户中心
|
|
|
|
|
用户中心信息页,显示登录用户的信息,包括用户名、电话和地址,同时页面下方显示出用户最近浏览的商品信息。
|
|
|
|
|
用户中心地址页:显示登陆用户的默认收件地址,页面下方的表单可以新增用户的收货地址。
|
|
|
|
|
用户中心订单页:显示登录用户的订单信息。
|
|
|
|
|
4)其他
|
|
|
|
|
如果用户已经登陆,页面顶部显示用户的订单信息。
|
|
|
|
|
1.2 商品模块
|
|
|
|
|
1)首页
|
|
|
|
|
动态指定首页轮播商品信息。
|
|
|
|
|
动态指定首页活动信息。
|
|
|
|
|
动态获取商品的种类信息并显示。
|
|
|
|
|
动态指定首页显示的每个种类的商品(包括图片商品的文字商品)。
|
|
|
|
|
点击某一个商品时跳转到商品的详情页面。
|
|
|
|
|
2)商品详情页
|
|
|
|
|
显示出某个商品的详细信息。
|
|
|
|
|
页面下方显示出该商品的两个新品信息。
|
|
|
|
|
3)商品列表页
|
|
|
|
|
显示出某一个种类的商品的列表数据,分页显示并支持按照默认、价格和人气进行排序。
|
|
|
|
|
页面下方显示出该商品的两个新品信息。
|
|
|
|
|
4)其他
|
|
|
|
|
通过搜索框搜索商品信息。
|
|
|
|
|
1.3 购物车模块
|
|
|
|
|
列表页和详情页将商品添加到购物车。
|
|
|
|
|
用户登录后,首页,详情页,列表页显示用户购物车中的商品数目。
|
|
|
|
|
购物车页面:对用户购物车中的商品操作。如选择某件商品,增加或减少购物车中的商品数目。
|
|
|
|
|
1.4 订单相关
|
|
|
|
|
提交订单页面:显示用户准备购买的商品信息。
|
|
|
|
|
点击提交订单完成订单的创建。
|
|
|
|
|
用户中心订单页显示用户的订单信息。
|
|
|
|
|
点击支付完成订单的支付。
|
|
|
|
|
点击评价完成订单的评价。
|
|
|
|
|
|