大家好,歡迎來到 Crossin的程式設計教室 !
正文開始之前先通知一個福利:
噹噹暑假閱讀季優惠碼
今天可在每滿100-50的基礎上疊加
滿200減30:
VN4U6M
滿300減60:
VQJGZD
結算時選擇【優惠碼】
輸入
VN4U6M
或
VQJGZD
即可
數量有限,先到先得
之前有同學問我,想自己搭建一個電商網站,不知道python有沒有類似的開源專案?
答案是肯定的,今天我們就給大家介紹這樣的一個專案:
Saleor
Saleor 是一個快速發展的開源電子商務平臺,基於 Python 和 Django 開發。
它的特點如下:
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:
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 訂閱事件。
下面我們介紹如何基於外掛進行擴充套件開發。
如上圖所示,Saleor Core 提供了一種回撥通知事件給外掛,外掛基於此事件進行相關操作,並與資料庫進行互動。
開發外掛,
你必須繼承 BasePlugin 基類,然後重寫部分方法,比如下面這個例子重寫了方法,增加了訂單建立時的一些操作:
載入外掛,
需要在 setup。py 進行配置來自動發現已安裝的外掛。要使外掛可被發現,你需要設定的欄位, 並使用這個語法定義外掛:。
示例如下:
如果你的外掛是 Django 應用程式,包名(等號前的部分)將被新增到 Django 的中,以便你可以利用 Django 的功能,例如 ORM 整合和資料庫遷移。
注意到我們前面訂單建立時的操作使用了 。delay 的語法,這是 Celery 的非同步任務。因為有些外掛的操作就應該非同步完成,Saleor 使用 Celery 並將發現 tasks。py 在外掛目錄中宣告的所有非同步任務:
上面這個函式就是前面外掛用到的非同步任務,在外掛呼叫delay方法後,這個任務將被塞到佇列中非同步執行。
好了,上面就是一個簡單的外掛開發例子,個人認為 Saleor 的開發模式還是很不錯的。如果大家有需要,可以採用這個專案構建一個屬於自己的商城。