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. ...
随机推荐
- django 关于render的返回数据
1,问题探讨 : 通过ajax 发送请求,接受render返回的数据.到底是什么样的类型呢? def text(request): # v = reverse("test") # ...
- 项目报错:Caused by: java.lang.ClassNotFoundException: Didn't find class "..."on path: DexPathList
项目报错: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.eshore.njb.MyApplicat ...
- 《Inside C#》笔记(一) .NET平台
C# 基于.NET运行时,所以有必要首先对.NET以及C#与.NET平台的关系有一定的了解. 一 .NET平台 .NET背后的基本思想是将原本独立工作的设备.网络服务整合在一个统一的平台上,从而可以为 ...
- Spring学习笔记(一):快速入门
Spring简介: Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的.Spring使用基本的JavaBean来完成以前只可能由EJB完 ...
- Python+Selenium笔记(八):操作下拉菜单
(一) Select类 Select类是selenium的一个特定的类,用来与下拉菜单和列表交互. 下拉菜单和列表是通过HTML的<select> 元素实现的.选择项是通过<sele ...
- 犀牛Rhino教程合集37部
犀牛Rhino教程合集37部 教程说明:英文视频教程,部分有中文字幕,大部分有工程文件 教程格式:Flv.MP4格式,大部分高清,确保能看清软件上的文字 发货方式:百度网盘下载链接(教程较多,可转存到 ...
- 从托管映像创建 VM
可以从 Azure 中托管的 VM 映像创建多个 VM. 托管 VM 映像包含创建 VM 所需的信息,包括 OS 和数据磁盘. 构成映像的 VHD(包括 OS 磁盘和任何数据磁盘)存储为托管磁盘. 先 ...
- 可选的binlog解析组件
本文的mysql-binlog-connector-java:https://github.com/shyiko/mysql-binlog-connector-java 阿里的canal:https: ...
- Character Sets: Migrating to utf8mb4 with pt_online_schema_change
David Berube | June 12, 2018 | Posted In: MySQL Modern applications often feature the use of data ...
- 大话存储 3 - 七种磁盘RAID技术
RAID技术 Redundant Array of Independent Disks 由独立的磁盘组成的具有冗余特性的阵列. 有两个特性: 阵列:需要很多磁盘来组成 冗余:允许某块磁盘损坏之后,数据 ...