Django框架项目-电商web(未前后分离)

Posted SmartCat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django框架项目-电商web(未前后分离)相关的知识,希望对你有一定的参考价值。

项目:电商订购网站

所用到框架:

  • 语言:Python3.6.8 (Django==1.11.1)
  • 数据库: mysql、 redis
  • 任务队列(异步处理): celery
  • 分布式文件存储: FastDFS或者本地都行
  • 搜索引擎(商品检索): django-haystack 、whoosh
  • web服务器配置: nginx+ uwsgi
  • 后台管理: django-admin

实现功能:用户模块,商品相关,购物车相关,订单相关

1. 需求分析

1.1 用户模块

  1. 注册页
  2. 注册时校验用户名是否已被注册。
  3. 完成用户信息的注册。
  4. 给用户的注册邮箱发送邮件,用户点击邮件中的激活链接完成用户账户的激活。----- celery +redis
  5. 登录页
  6. 实现用户的登录功能。
  7. 用户中心
  8. 用户中心信息页:显示登录用户的信息,包括用户名、电话和地址,同时页面下方显示出用户最近浏览的商品信息。
  9. 用户中心地址页:显示登录用户的默认收件地址,页面下方的表单可以新增用户的收货地址。
  10. 用户中心订单页:显示登录用户的订单信息。
  11. 其他
  12. 如果用户已经登录,页面顶部显示登录用户的信息。

1.2 商品相关

  1. 首页-----(静态)-----celery+nginx
  2. 动态指定首页轮播商品信息。
  3. 动态指定首页活动信息。
  4. 动态获取商品的种类信息并显示。
  5. 动态指定首页显示的每个种类的商品(包括图片商品和文字商品)。
  6. 点击某一个商品时跳转到商品的详情页面。
  7. 商品详情页
  8. 显示出某个商品的详情信息。
  9. 页面的左下方显示出该种类商品的2个新品信息。

3)商品列表页

  • 显示出某一个种类商品的列表数据,分页显示并支持按照默认、价格、和人气进行排序。
  • 页面的左下方显示出该种类商品的2个新品信息。

4)其他

  • 通过页面搜索框搜索商品信息。-------haystack引擎

1.3 购物车相关

  • 列表页和详情页将商品添加到购物车。
  • 用户登录后,首页,详情页,列表页显示登录用户购物车中商品的数目。
  • 购物车页面:对用户购物车中商品的操作。如选择某件商品,增加或减少购物车中商品的数目。

1.4 订单相关

  • 提交订单页面:显示用户准备购买的商品信息。
  • 点击提交订单完成订单的创建。
  • 用户中心订单页显示用户的订单信息。
  • 点击支付完成订单的支付。

技术图片 技术图片

2.性能优化

  1. 推荐将admin改成xadmin以便于插件开发
  2. 发送邮件等耗时操作使用了Celery任务队列,redis作为操作的中间件,以节约等待时间
  3. 记录登陆功能、购物车功能使用了redis缓存存储
  4. admin可以继承save_model方法,而xadmin没有,所以这里使用将关键数据和缓存数据进行比较,如果不相同就说明页面改变,则开启异步静态化页面
  5. 考虑到服务器的内存可能不够存储静态资源,所以采用了FDFS存储静态资源
  6. 将首页,详情页面,列表页等所有用户都能看到的界面在第一次访问之后静态化,以减少数据库的操作
  7. 搜索功能采用了haystack全文检索框架来使用whoosh搜索引擎,在搜索的时候使用jieba分词,能使得搜索更全面和准确
  8. 订单解决了并发问题

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

以上是关于Django框架项目-电商web(未前后分离)的主要内容,如果未能解决你的问题,请参考以下文章

Django+Vue前后台分离项目开发

Django 3 + Vue.js 前后端分离Web开发实战

Django单表增删改查-前后端不分离

SpringBoot电商项目实战 — 前后端分离后的优雅部署及Nginx部署实现

django前后端分离部署

python框架django中结合vue进行前后端分离