Django框架项目-电商web(未前后分离)
项目:电商订购网站
所用到框架:
- 语言:Python3.6.8 (Django==1.11.1)
- 数据库: MySql、 redis
- 任务队列(异步处理): celery
- 分布式文件存储: FastDFS或者本地都行
- 搜索引擎(商品检索): django-haystack 、whoosh
- web服务器配置: Nginx+ uwsgi
- 后台管理: django-admin
实现功能:用户模块,商品相关,购物车相关,订单相关
1. 需求分析
1.1 用户模块
- 注册页
- 注册时校验用户名是否已被注册。
- 完成用户信息的注册。
- 给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活。----- celery +redis
- 登录页
- 实现用户的登录功能。
- 用户中心
- 用户中心信息页:显示登录用户的信息,包括用户名、电话和地址,同时页面下方显示出用户最近浏览的商品信息。
- 用户中心地址页:显示登录用户的默认收件地址,页面下方的表单可以新增用户的收货地址。
- 用户中心订单页:显示登录用户的订单信息。
- 其他
- 如果用户已经登录,页面顶部显示登录用户的信息。
1.2 商品相关
- 首页-----(静态)-----celery+nginx
- 动态指定首页轮播商品信息。
- 动态指定首页活动信息。
- 动态获取商品的种类信息并显示。
- 动态指定首页显示的每个种类的商品(包括图片商品和文字商品)。
- 点击某一个商品时跳转到商品的详情页面。
- 商品详情页
- 显示出某个商品的详情信息。
- 页面的左下方显示出该种类商品的2个新品信息。
3)商品列表页
- 显示出某一个种类商品的列表数据,分页显示并支持按照默认、价格、和人气进行排序。
- 页面的左下方显示出该种类商品的2个新品信息。
4)其他
- 通过页面搜索框搜索商品信息。-------haystack引擎
1.3 购物车相关
- 列表页和详情页将商品添加到购物车。
- 用户登录后,首页,详情页,列表页显示登录用户购物车中商品的数目。
- 购物车页面:对用户购物车中商品的操作。如选择某件商品,增加或减少购物车中商品的数目。
1.4 订单相关
- 提交订单页面:显示用户准备购买的商品信息。
- 点击提交订单完成订单的创建。
- 用户中心订单页显示用户的订单信息。
- 点击支付完成订单的支付。
2.性能优化
- 推荐将admin改成xadmin以便于插件开发
- 发送邮件等耗时操作使用了Celery任务队列,redis作为操作的中间件,以节约等待时间
- 记录登陆功能、购物车功能使用了redis缓存存储
- admin可以继承save_model方法,而xadmin没有,所以这里使用将关键数据和缓存数据进行比较,如果不相同就说明页面改变,则开启异步静态化页面
- 考虑到服务器的内存可能不够存储静态资源,所以采用了FDFS存储静态资源
- 将首页,详情页面,列表页等所有用户都能看到的界面在第一次访问之后静态化,以减少数据库的操作
- 搜索功能采用了haystack全文检索框架来使用whoosh搜索引擎,在搜索的时候使用jieba分词,能使得搜索更全面和准确
- 订单解决了并发问题
3.会遇到的困难
1.数据模型建立的时候可能会乱,需要提前想好,图片存储的位置,建议是存在一个统一的文件夹下再进行分类
2.详情页面中的图片的url,在存在于goods下的,所以需要对url进行修改,或者用偷懒的方法建一个goods文件夹再复制进去照片
3.celery的bug 一部分会来源于你的HOST,可能会被代理邮箱服务器认为是一个bad name 一部分来源于windows系统,建议有条件的直接使用Linux(天坑!!!)
4.没有前后端分离,需要修改的时候会感觉一团糟jq太多了
5. 使用了celery异步缓存首页文件,并且发现在windows上写文件默认的编码是gbk,所以在win10上部署的时候一定要encoding='utf-8'
6. 支付宝沙箱环境支付不能注册,等有空解决 (天坑!!!)
7.不推荐在apps中放入你要的app,这样会使pycharm无法识别,代码提示问题严重
8.伪静态的时候会遇到很多bug,解决方法是直接去ng目录下寻找文件,可能没有显示,但是根文件已经存在,直接修改配置。
9.在web缩放的时候会出现格式乱的情况(天坑!!!)
4.成果图
首页
用户模块
商品详细
后台
邮件激活
5.源文件
链接:https://pan.baidu.com/s/1cEZ1Yink7yhdfZdvENbtlA
提取码:7h28
smartcat.994