0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何部署開(kāi)源Python超漂亮電子商城

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-10-31 16:49 ? 次閱讀

Saleor 是一個(gè)快速發(fā)展的開(kāi)源電子商務(wù)平臺(tái),基于 Python 和 Django開(kāi)發(fā),且持續(xù)更新中,一點(diǎn)不用擔(dān)心版本過(guò)舊的問(wèn)題。

它的特點(diǎn)如下:

  1. GraphQL API :基于GraphQL實(shí)現(xiàn)的前后端分離,屬于最前沿的技術(shù)。
  2. 儀表板 :管理員可以完全控制用戶(hù)、流程和產(chǎn)品。
  3. 訂單 :訂單、發(fā)貨和退款的綜合系統(tǒng)。
  4. 購(gòu)物車(chē) :高級(jí)付款和稅收選項(xiàng),支持折扣和促銷(xiāo)活動(dòng)
  5. 支付 :靈活的 API 架構(gòu)允許集成任何支付方式。
  6. 地理自適應(yīng) :自動(dòng)支持多國(guó)家的結(jié)賬體驗(yàn)。
  7. 支持云部署 :支持Docker部署。
  8. 支持谷歌分析 :集成了谷歌分析,可以很方便地分析流量去留。

Saleor 倉(cāng)庫(kù)地址:
https://github.com/mirumee/saleor

1.部署指南

Saleor支持多種運(yùn)行方式,你可以采用手動(dòng)安裝并運(yùn)行的方式,也可以使用Docker進(jìn)行運(yùn)行,下面介紹全平臺(tái)通用且最簡(jiǎn)單的Docker部署方案。

在按照以下說(shuō)明操作之前,你需要安裝Docker Desktop和Docker Compose,如果你沒(méi)安裝過(guò),可以看看這篇教程
https://www.runoob.com/docker/docker-tutorial.html

Docker 部署 Saleor 非常方便,你只需要克隆存儲(chǔ)庫(kù)并構(gòu)建鏡像然后運(yùn)行服務(wù)即可:

# Python 實(shí)用寶典
# 克隆存儲(chǔ)庫(kù)
git clone https://github.com/mirumee/saleor-platform.git --recursive --jobs 3
cd saleor-platform
# 構(gòu)建Docker鏡像
docker-compose build

如果你無(wú)法成功克隆 Salor 源代碼倉(cāng)庫(kù),請(qǐng)?jiān)赑ython實(shí)用寶典公眾號(hào)回復(fù):**Saleor **下載全部源代碼。

Saleor 使用共享文件夾來(lái)啟用 實(shí)時(shí)代碼重新加載 。如果你使用的是WindowsMacOS ,則需要:

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

2.確保在 Docker 首選項(xiàng)中你有至少 5 GB 的專(zhuān)用內(nèi)存(設(shè)置 -> 高級(jí) 或 *首選項(xiàng) * ->資源 -> 高級(jí)

執(zhí)行數(shù)據(jù)庫(kù)migrations及打包前端資源:

docker-compose run --rm api python3 manage.py migrate
docker-compose run --rm api python3 manage.py collectstatic --noinput

(可選)使用示例數(shù)據(jù)填充數(shù)據(jù)庫(kù):

docker-compose run --rm api python3 manage.py populatedb

最后,為自己創(chuàng)建一個(gè)管理員帳戶(hù):

docker-compose run --rm api python3 manage.py createsuperuser

**
運(yùn)行服務(wù):**

使用以下命令運(yùn)行Saleor:

docker-compose up

圖片

2.架構(gòu)介紹

如果你要基于 Saleor 進(jìn)行開(kāi)發(fā),那么你必須了解它的架構(gòu)。

圖片

Saleor 由三個(gè)重要組件組成:

1.Saleor Core, 它是GraphQL API的后端服務(wù)器?;贒jango開(kāi)發(fā),數(shù)據(jù)庫(kù)采用了PostgreSQL并在Redis中儲(chǔ)存了一些緩存信息。

2.Saleor Dashboard , 這是一個(gè)可以用來(lái)經(jīng)營(yíng)商店的儀表盤(pán),它是一個(gè)靜態(tài)網(wǎng)站,因此沒(méi)有任何自己的后端代碼,它是一個(gè)與Saleor Core核心服務(wù)器對(duì)話(huà)的React程序。

3.Saleor Storefront, 這是基于React實(shí)現(xiàn)的示例商店,你可以自定義這部分代碼滿(mǎn)足你自己的需求,也可以使用 Saleor SDK 構(gòu)建自定義店面。

所有三個(gè)組件都使用 GraphQL 通過(guò) HTTPS 進(jìn)行通信。

3.擴(kuò)展開(kāi)發(fā)

雖然你可以直接基于Saleor源代碼進(jìn)行開(kāi)發(fā),但是官方建議不這么做,原因是一旦你的代碼和Saleor官方源代碼產(chǎn)生沖突,你就很難跟上官方的更新,最終會(huì)導(dǎo)致代碼沒(méi)人維護(hù)的尷尬局面。

因此Saleor提供了兩種添加功能的方式:

1.插件功能 :插件提供了一種在 Saleor Core 上運(yùn)行附加代碼的能力,而且有訪問(wèn)數(shù)據(jù)庫(kù)的能力。

2.APPS :基于 GraphQL API 和 Saleor Core 開(kāi)發(fā)APP,還可以使用 WebHooks 訂閱事件。

下面我們介紹如何基于插件進(jìn)行擴(kuò)展開(kāi)發(fā)。

圖片

如上圖所示,Saleor Core 提供了一種回調(diào)通知事件給插件,插件基于此事件進(jìn)行相關(guān)操作,并與數(shù)據(jù)庫(kù)進(jìn)行交互。

開(kāi)發(fā)插件, 你必須繼承 BasePlugin 基類(lèi),然后重寫(xiě)部分方法,比如下面這個(gè)例子重寫(xiě)了** postprocess_order_creation **方法,增加了訂單創(chuàng)建時(shí)的一些操作:

# Python實(shí)用寶典
# custom/plugin.py

from django.conf import settings
from urllib.parse import urljoin

from ..base_plugin import BasePlugin
from .tasks import api_post_request_task


class CustomPlugin(BasePlugin):
    def postprocess_order_creation(self, order: "Order", previous_value: Any):
        # 訂單創(chuàng)建時(shí)的操作
        data = ...

        transaction_url = urljoin(settings.CUSTOM_API_URL, "transactions/createoradjust")
        api_post_request_task.delay(transaction_url, data)

**加載插件, 需要在 setup.py 進(jìn)行配置來(lái)自動(dòng)發(fā)現(xiàn)已安裝的插件。要使插件可被發(fā)現(xiàn),你需要設(shè)置entry_pointssaleor_plugins **字段, 并使用這個(gè)語(yǔ)法定義插件: ** package_name = package_name.path.to:PluginClass ** .

示例如下:

# setup.py
from setuptools import setup

setup(
    ...,
    entry_points={
        "saleor.plugins": [
            "my_plugin = my_plugin.plugin:MyPlugin"
        ]
    }
)

如果你的插件是 Django 應(yīng)用程序,包名(等號(hào)前的部分)將被添加到 Django 的**INSTALLED_APPS **中,以便你可以利用 Django 的功能,例如 ORM 集成和數(shù)據(jù)庫(kù)遷移。

注意到我們前面訂單創(chuàng)建時(shí)的操作使用了 .delay 的語(yǔ)法,這是 Celery 的異步任務(wù)。因?yàn)橛行┎寮牟僮骶蛻?yīng)該異步完成,Saleor 使用 Celery 并將發(fā)現(xiàn) tasks.py 在插件目錄中聲明的所有異步任務(wù):

# custom_plugin/tasks.py

import json
from celery import shared_task
from typing import Any, Dict

import requests
from requests.auth import HTTPBasicAuth
from django.conf import settings


@shared_task
def api_post_request(
    url: str,
    data: Dict[str, Any],
):
    try:
        username = "username"
        password = "password"
        auth = HTTPBasicAuth(username, password)
        requests.post(url, auth=auth, data=json.dumps(data), timeout=settings.TIMEOUT)
    except requests.exceptions.RequestException:
        return

上面這個(gè)**api_post_request **函數(shù)就是前面插件用到的異步任務(wù),在插件調(diào)用delay方法后,這個(gè)任務(wù)將被塞到隊(duì)列中異步執(zhí)行。

好了,上面就是一個(gè)簡(jiǎn)單的插件開(kāi)發(fā)例子,個(gè)人認(rèn)為 Saleor 的開(kāi)發(fā)模式還是很不錯(cuò)的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)
    +關(guān)注

    關(guān)注

    13

    文章

    4180

    瀏覽量

    85487
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3186

    瀏覽量

    42244
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4759

    瀏覽量

    84294
  • Django
    +關(guān)注

    關(guān)注

    0

    文章

    43

    瀏覽量

    10350
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    447

    瀏覽量

    11775
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [原創(chuàng)]低價(jià)出售筆記本電腦

    :索尼.微軟.任天堂.神游科技我們的經(jīng)營(yíng)理念是開(kāi)創(chuàng)一種全新的“網(wǎng)絡(luò)+實(shí)體”、“商務(wù)+資訊”的商業(yè)模式我們的宗旨是“有你就有狼港電子商城”:你可以找到我們的實(shí)體,也可以找到我們的網(wǎng)絡(luò);你可以到我們商城
    發(fā)表于 03-20 15:20

    足不出戶(hù),電子元器件采購(gòu)一站式服務(wù)

    本帖最后由 eehome 于 2013-1-5 10:07 編輯 足不出戶(hù),實(shí)現(xiàn)電子元器件采購(gòu)咨詢(xún)一站式服務(wù)!就在 天天電子商城www.365ele.com 。如果您想討論技術(shù)問(wèn)題,交流工程設(shè)計(jì)心得,就在巴布工程師論壇www.365ele.com/bbs
    發(fā)表于 06-01 22:21

    2012淘寶1元電子商城

    2012淘寶1元電子商城http://item.taobao.com/item.htm?id=***http://item.taobao.com/item.htm?id=18476888251
    發(fā)表于 07-04 21:46

    100%電子產(chǎn)品商城

    100%正品電子產(chǎn)品商城(斯興商城),歡迎各位高手逛逛和
    發(fā)表于 08-29 22:55

    如果你正在用一款包含有ERP、電子商城、找貨等應(yīng)用的服務(wù)平臺(tái),里面有一些什么樣的功能會(huì)讓你有興趣使用?

    如果現(xiàn)在有一款包含有ERP、電子商城、找貨等應(yīng)用的服務(wù)平臺(tái),里面有一些什么樣的功能會(huì)讓你有興趣使用?商城是為商家定制的,前期建設(shè)和后期維護(hù)都不需要商家操心。
    發(fā)表于 05-25 10:30

    有沒(méi)有壇友用過(guò)TI公司的DRV8301或8302驅(qū)動(dòng)芯片

    都是在哪購(gòu)買(mǎi)啊,淘寶上的比電子商城的要便宜,但是不知道靠譜不靠譜是不是正品啊
    發(fā)表于 08-08 21:37

    唯樣商城——國(guó)內(nèi)領(lǐng)先的電子元器件目錄授權(quán)分銷(xiāo)商

    初來(lái)乍到,先做個(gè)自我介紹。唯樣是國(guó)內(nèi)領(lǐng)先的電子元器件目錄授權(quán)分銷(xiāo)商,依托在線交易服務(wù)平臺(tái)www.oneyac.com,實(shí)現(xiàn)“小批量、現(xiàn)貨、樣品”銷(xiāo)售。我們的優(yōu)勢(shì):1. 與300+ 知名品牌合作
    發(fā)表于 02-18 21:54

    Python在web應(yīng)用實(shí)現(xiàn)部署的協(xié)議與實(shí)現(xiàn)協(xié)議的工具解析

    php的正式環(huán)境部署非常簡(jiǎn)單,改幾個(gè)文件就OK,用FastCgi方式也是分分鐘的事情。相比起來(lái),Python在web應(yīng)用上的部署就繁雜的多,主要是工具繁多,主流服務(wù)器支持不足,在了解Pytho
    的頭像 發(fā)表于 02-09 09:26 ?5004次閱讀

    精選10個(gè)Python開(kāi)源項(xiàng)目

    過(guò)去一個(gè)月里,我們對(duì)近 250 個(gè) Python 開(kāi)源項(xiàng)目進(jìn)行了排名,并挑選出熱度前 10 的項(xiàng)目。
    的頭像 發(fā)表于 11-12 09:47 ?6270次閱讀

    簡(jiǎn)單:用Python讓Excel飛起來(lái)

    簡(jiǎn)單:用Python讓Excel飛起來(lái)
    發(fā)表于 05-25 10:46 ?54次下載

    傳感器距離標(biāo)志開(kāi)源分享

    電子發(fā)燒友網(wǎng)站提供《傳感器距離標(biāo)志開(kāi)源分享.zip》資料免費(fèi)下載
    發(fā)表于 11-02 15:16 ?0次下載
    <b class='flag-5'>超</b>傳感器距離標(biāo)志<b class='flag-5'>開(kāi)源</b>分享

    Python控制的機(jī)械臂開(kāi)源分享

    電子發(fā)燒友網(wǎng)站提供《Python控制的機(jī)械臂開(kāi)源分享.zip》資料免費(fèi)下載
    發(fā)表于 02-03 10:06 ?3次下載
    <b class='flag-5'>Python</b>控制的機(jī)械臂<b class='flag-5'>開(kāi)源</b>分享

    網(wǎng)絡(luò)工程師學(xué)Python-開(kāi)源自動(dòng)化部署工具Fabric

    Python Fabric是一個(gè)基于Python開(kāi)源自動(dòng)化部署工具,可以簡(jiǎn)化管理遠(yuǎn)程服務(wù)器的過(guò)程。
    的頭像 發(fā)表于 04-28 09:54 ?693次閱讀

    關(guān)于兩個(gè)Python開(kāi)源識(shí)別工具的效果

    回復(fù)希望出一篇 OCR 相關(guān)的文章,今天嘗試了一下 cnocr 和 tesseract 兩個(gè) Python 開(kāi)源識(shí)別工具的效果,給大家分別講講兩個(gè)工具的使用方法和對(duì)比效果。 1.準(zhǔn)備 開(kāi)始之前,你要確保
    的頭像 發(fā)表于 10-17 11:36 ?591次閱讀
    關(guān)于兩個(gè)<b class='flag-5'>Python</b><b class='flag-5'>開(kāi)源</b>識(shí)別工具的效果

    Python 如何一鍵轉(zhuǎn)化代碼為流程圖

    Graphviz是一個(gè)可以對(duì)圖進(jìn)行自動(dòng)布局的繪圖工具,由貝爾實(shí)驗(yàn)室開(kāi)源。我們?cè)谏洗?Python 快速繪制畫(huà)出漂亮的系統(tǒng)架構(gòu)圖 提到的diagrams,其內(nèi)部的編排邏輯就用到了這個(gè)開(kāi)源
    的頭像 發(fā)表于 11-01 10:39 ?2051次閱讀
    <b class='flag-5'>Python</b> 如何一鍵轉(zhuǎn)化代碼為流程圖