• python之Django实现商城从0到1


    dailyfresh-B2C
    dailyfresh mall based on B2C model
    基于B2C的天天生鲜商城

    项目托管地址:https://github.com/Ylisen/dailyfresh-B2C

    1. 简介
    B2C(Business-to-Customer), 企业对个人的一种商业模式,简称"商对客". 商对客是电子商务的一种模式,这种电子商务一般以网络零售业为主,主要借助于互联网开展在线销售活动。 B2C即企业通过互联网为消费者提供一个新型的购物环境——网上商店,消费者通过网络在网上购物、网上支付等消费行为。

    为消费者提供一个新型的购物环境:
    从0开始,立项、构建、开发到部署, 搭建一个天天生鲜商场

    2.  技术栈
    - 语言:Python3.* (Django)
    - 数据库: MySql、 redis
    - 任务队列(异步处理): celery(django-celery)
    - 分布式文件存储: FastDFS
    - 搜索引擎(商品检索): haystack(django-haystack)、whoosh、二次开发
    - web服务器配置: Nginx+ uwsgi
    - 开发环境: PyCharm、Linux、vim


    3. 技术架构
    3.1  开发架构
    采用BS结构, 即Browser/Server(浏览器/服务器)结构,构建一个web的网站商城系统, 其架构逻辑:

    3.2  部署架构
    Nginx+uwsgi


    4. 主体模块
    主要分为四个大模块:
    * 用户模块、
    * 商品相关模块、
    * 购物车相关模块、
    * 订单相关模块、


    5.  数据库表


    * SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。
    例如,iphone4就是一个SPU,N97也是一个SPU,这个与商家无关,与颜色、款式、套餐也无关。
    * SKU即库存进出计量的单位, 可以是以件、盒、托盘等为单位,在服装、鞋类商品中使用最多最普遍。
    例如纺织品中一个SKU通常表示:规格、颜色、款式。


    6. 功能模块展示
    [点击查看--多图预警](Readme/show.md)


    7. 功能与性能优化
    7.1  用户注册发激活邮件时,可能发送邮件所需的时间较长,客户端会需要等待,用户体验不好。
    > 把耗时的任务放到后台异步执行,此处使用celery任务队列, 其中使用redis作中间件。
    7.2 redis存储用户历史浏览记录, 采用list数据结构: History_用户id: [skuid1,skuid2,skuid3]
    7.3 使用redis存储用户购物车商品信息,采用hash数据结构: cart_userid: {'sku_id1': num, 'sku_id2': num}
    7.4 采用分布式文件系统, 把商品图片等信息存储在FastDFS系统中, Nginx+FastDFS配合, 减少服务器的压力。
    7.5 页面静态化: 首页、商品列表页、商品详情页等用户共同的页面, 把页面静态化,以减少对数据库的操作。当后台数据更改时自动重新生成静态页。
    7.6 页面数据缓存,把页面使用的数据存放在缓存中,当再次使用这些数据时,先从缓存中获取,如获取不到,再去查询数据库,减少数据库的查询次数。
    7.7 订单并发


    8. 相关链接
    * Libfastcommon: 安装FastDFS之前要先安装它的依赖库libfastcommon
    (https://github.com/happyfish100/libfastcommon/releases)
    * FastDFS
    (https://github.com/happyfish100/FastDFS)
    * Nginx
    (https://nginx.org/download/)
    * fastdfs-nginx-module
    (https://github.com/happyfish100/fastdfs-nginx-module/releases)
    * 支付宝api
    (https://open.alipay.com/platform/home.htm)

     

    本次主要加深了对整站开发所需的技术栈,并熟悉整个项目开发的流程、进度控制、发现解决问题等过程。

    项目已托管在github:https://github.com/Ylisen/dailyfresh-B2C

  • 相关阅读:
    MySQL5.7.17解压版安装
    autocomplete初步使用
    前端面试题:驼峰体与匈牙利语法的相互转换
    前端常用正则表达式
    解决npm报错:Module build failed: TypeError: this.getResolve is not a function
    vue实现对语言的切换,结合vue-il8n。
    大量数据处理的一个思路
    不同格式矢量数据源在MapServer上发布服务后切片缓存效率对比
    CentOS7使用yum安装PostgreSQL和PostGIS
    ArcGIS消除图斑重叠错误
  • 原文地址:https://www.cnblogs.com/firebet/p/13969520.html
Copyright © 2020-2023  润新知