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
python之Django实现商城从0到1的更多相关文章
- python框架Django实战商城项目之工程搭建
项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...
- python框架Django实战商城项目之用户模块创建
创建用户APP 整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用. 在apps包目录下穿件users应用 python ../../manage.py s ...
- [Python] 利用Django进行Web开发系列(一)
1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...
- [Python] 利用Django进行Web开发系列(二)
1 编写第一个静态页面——Hello world页面 在上一篇博客<[Python] 利用Django进行Web开发系列(一)>中,我们创建了自己的目录mysite. Step1:创建视图 ...
- Window环境下Python和Django的安装
转载地址:http://blog.csdn.net/haoni123321/article/details/7593821 1.下载python,本文使用python-2.7.2.msi 2.下载dj ...
- Python 学习笔记13:Python + wsgi + django 配置。坑爹的python3和wsgi不兼容的解决
今人不见古时月,今月曾经照古人.生命是如此的美丽与短暂! 学习Python已经两个月了,Python的语法通过做简单的语法题和看Python语法介绍,有了初步的了解.但上班还是要做别的事情,所以感觉学 ...
- Nginx+Python+uwsgi+Django的web开发环境安装及配置
Nginx+Python+uwsgi+Django的web开发环境安装及配置 nginx安装 nginx的安装这里就略过了... python安装 通常系统已经自带了,这里也略过 uwsgi安装 官网 ...
- python web -- django
一. 安装 django $ pip install django (env)$ python >> import django >> django.VERSION >& ...
- Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)
Python之Django环境搭建(MAC+pycharm+Django++postgreSQL) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7828614. ...
随机推荐
- ActiveReports 报表应用教程 (14)---数据可视化
葡萄城ActiveReports报表中提供了丰富的数据可视化解决方案,用户可以将数据以图像化的方式进行显示,让报表数据更加形象且便于理解.在葡萄城ActiveReports报表中提供了大多数常用的二维 ...
- 常用的第三方模块 chardet url
chardet 字符串编码一直是令人非常头疼的问题,尤其是我们在处理一些不规范的第三方网页的时候.虽然Python提供了Unicode表示的str和bytes两种数据类型,并且可以通过encode() ...
- java EE 监听器
生命周期监听器与属性改变监听器都必须使用@WebListener或在web.xml中声明,容器才会知道要加载.读取相关的监听器.
- [转载]Buffer cache的调整与优化
Buffer Cache是SGA的重要组成部分,主要用于缓存数据块,其大小也直接影响系统的性能.当Buffer Cache过小的时候,将会造成更多的free buffer waits事件.下面将具体描 ...
- mysql 5.5 数据库 utf8改utf8mb4
由于需要用到utf8mb4,之前是utf8现在给改成utf8mb4 查看当前环境 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_ ...
- PXE 和 计算机网络启动
1. 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网 ...
- SQL 的各种 join 用法
作者丨C.L. Moffatt http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins I am go ...
- VMware虚拟机打开后不兼容
在版本VMware Workstation10.0设置兼容性,在编辑——首选项——工作空间——设置EXS兼容.计算机工作区域打开虚拟机,右键管理.兼容性从新配置
- Rafy框架
l 什么是Rafy框架? -------- Rafy 是一个面向企业级开发的插件化快速开发框架. l Rafy的优点是什么? ------快速开发.产品线工程.一套代码可同时生成并运行 C/S.单 ...
- October 18th 2017 Week 42nd Wednesday
Only someone who is well-prepared has the opportunity to improvise. 只有准备充分的人才能够尽兴表演. From the first ...