zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    记一次文件上传远程服务器问题
    Python模块——loguru日志模块简单学习
    Python使用百度地图API根据地名获取相应经纬度
    Python用正则表达式匹配汉字
    【工具】下载与使用(感谢博友)
    【umask】安装产品,脚本中创建目录后注意刷权限
    【凝聚】引荐优笔
    【解决办法1】centos75 No manual entry for XXXX in section X
    【填坑1】CentOS7 systemctrl管理的服务,open files的神坑
    错题记录(二)
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/12306852.html
Copyright © 2011-2022 走看看