選單

輕鬆部署一個Python版的網上商城

大家好,歡迎來到 Crossin的程式設計教室 !

正文開始之前先通知一個福利:

噹噹暑假閱讀季優惠碼

今天可在每滿100-50的基礎上疊加

滿200減30:

VN4U6M

滿300減60:

VQJGZD

結算時選擇【優惠碼】

輸入

VN4U6M

VQJGZD

即可

數量有限,先到先得

之前有同學問我,想自己搭建一個電商網站,不知道python有沒有類似的開源專案?

答案是肯定的,今天我們就給大家介紹這樣的一個專案:

Saleor

Saleor 是一個快速發展的開源電子商務平臺,基於 Python 和 Django 開發。

輕鬆部署一個Python版的網上商城

它的特點如下:

1。

GraphQL API

:基於GraphQL實現的前後端分離,屬於最前沿的技術。

2。

儀表板

:管理員可以完全控制使用者、流程和產品。

3。

訂單

:訂單、發貨和退款的綜合系統。

4。

購物車

:高階付款和稅收選項,支援折扣和促銷活動

5。

支付

:靈活的 API 架構允許整合任何支付方式。

6。

地理自適應

:自動支援多國家的結賬體驗。

7。

支援雲部署

:支援Docker部署。

8。

支援谷歌分析

:集成了谷歌分析,可以很方便地分析流量去留。

Saleor目前還在持續更新中,一點不用擔心版本過舊的問題。

倉庫地址:

https://github。com/mirumee/saleor

1.部署指南

Saleor支援多種執行方式,你可以採用手動安裝並執行的方式,也可以使用Docker進行執行,下面介紹全平臺通用且最簡單的Docker部署方案。

在按照以下說明操作之前,你需要安裝Docker Desktop和Docker Compose,如果你沒安裝過,可以看看這篇教程:

https://www。runoob。com/docker/docker-tutorial。html

Docker 部署 Saleor 非常方便,你只需要克隆儲存庫並構建映象然後執行服務即可:

Saleor 使用共享資料夾來啟用

實時程式碼重新載入

。如果你使用的是

Windows

MacOS

,則需要:

1。將克隆的 saleor-platform 目錄放置到 Docker 的共享目錄配置 (Settings->Shared DrivesorPreferences->Resources->File sharing)。

2。確保在 Docker 首選項中你有至少 5 GB 的專用記憶體(設定->高階或首選項->資源->高階)

執行資料庫migrations及打包前端資源:

(可選)使用示例資料填充資料庫:

最後,為自己建立一個管理員帳戶:

執行服務:

使用以下命令執行Saleor:

輕鬆部署一個Python版的網上商城

2.架構介紹

如果你要基於 Saleor 進行開發,那麼你必須瞭解它的架構。

Saleor 由三個重要元件組成:

1.Saleor Core,

它是GraphQL API的後端伺服器。基於Django開發,資料庫採用了PostgreSQL並在Redis中儲存了一些快取資訊。

2.Saleor Dashboard

, 這是一個可以用來經營商店的儀表盤,它是一個靜態網站,因此沒有任何自己的後端程式碼,它是一個與Saleor Core核心伺服器對話的React程式。

3.Saleor Storefront,

這是基於React實現的示例商店,你可以自定義這部分程式碼滿足你自己的需求,也可以使用 Saleor SDK 構建自定義店面。

所有三個元件都使用 GraphQL 透過 HTTPS 進行通訊。

3.擴充套件開發

雖然你可以直接基於Saleor原始碼進行開發,但是官方建議不這麼做,原因是一旦你的程式碼和Saleor官方原始碼產生衝突,你就很難跟上官方的更新,最終會導致程式碼沒人維護的尷尬局面。

因此Saleor提供了兩種新增功能的方式:

1.外掛功能

:外掛提供了一種在 Saleor Core 上執行附加程式碼的能力,而且有訪問資料庫的能力。

2.APPS

:基於 GraphQL API 和 Saleor Core 開發APP,還可以使用 WebHooks 訂閱事件。

下面我們介紹如何基於外掛進行擴充套件開發。

輕鬆部署一個Python版的網上商城

如上圖所示,Saleor Core 提供了一種回撥通知事件給外掛,外掛基於此事件進行相關操作,並與資料庫進行互動。

開發外掛,

你必須繼承 BasePlugin 基類,然後重寫部分方法,比如下面這個例子重寫了方法,增加了訂單建立時的一些操作:

載入外掛,

需要在 setup。py 進行配置來自動發現已安裝的外掛。要使外掛可被發現,你需要設定的欄位, 並使用這個語法定義外掛:。

示例如下:

如果你的外掛是 Django 應用程式,包名(等號前的部分)將被新增到 Django 的中,以便你可以利用 Django 的功能,例如 ORM 整合和資料庫遷移。

注意到我們前面訂單建立時的操作使用了 。delay 的語法,這是 Celery 的非同步任務。因為有些外掛的操作就應該非同步完成,Saleor 使用 Celery 並將發現 tasks。py 在外掛目錄中宣告的所有非同步任務:

上面這個函式就是前面外掛用到的非同步任務,在外掛呼叫delay方法後,這個任務將被塞到佇列中非同步執行。

好了,上面就是一個簡單的外掛開發例子,個人認為 Saleor 的開發模式還是很不錯的。如果大家有需要,可以採用這個專案構建一個屬於自己的商城。