python之Django實現商城從0到1

dailyfresh-B2C
dailyfresh mall based on B2C model
基於B2C的每天生鮮商城 nginx

項目託管地址:https://github.com/Ylisen/dailyfresh-B2Cgit

 

1. 簡介
B2C(Business-to-Customer), 企業對我的的一種商業模式,簡稱"商對客". 商對客是電子商務的一種模式,這種電子商務通常以網絡零售業爲主,主要藉助於互聯網開展在線銷售活動。 B2C即企業經過互聯網爲消費者提供一個新型的購物環境——網上商店,消費者經過網絡在網上購物、網上支付等消費行爲。github

爲消費者提供一個新型的購物環境:
從0開始,立項、構建、開發到部署, 搭建一個每天生鮮商場web

 

2.  技術棧
- 語言:Python3.* (Django)
- 數據庫: MySql、 redis
- 任務隊列(異步處理): celery(django-celery)
- 分佈式文件存儲: FastDFS
- 搜索引擎(商品檢索): haystack(django-haystack)、whoosh、二次開發
- web服務器配置: Nginx+ uwsgi
- 開發環境: PyCharm、Linux、vimredis


3. 技術架構
3.1  開發架構
採用BS結構, 即Browser/Server(瀏覽器/服務器)結構,構建一個web的網站商城系統, 其架構邏輯:
數據庫

 

3.2  部署架構
Nginx+uwsgi
django

 


4. 主體模塊
主要分爲四個大模塊:
* 用戶模塊、
* 商品相關模塊、
* 購物車相關模塊、
* 訂單相關模塊、

vim


5.  數據庫表api

 


* 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

相關文章
相關標籤/搜索