0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何部署开源Python超漂亮电子商城

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-31 16:49 次阅读

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 非常方便,你只需要克隆存储库并构建镜像然后运行服务即可:

# Python 实用宝典
# 克隆存储库
git clone https://github.com/mirumee/saleor-platform.git --recursive --jobs 3
cd saleor-platform
# 构建Docker镜像
docker-compose build

如果你无法成功克隆 Salor 源代码仓库,请在Python实用宝典公众号回复:**Saleor **下载全部源代码。

Saleor 使用共享文件夹来启用 实时代码重新加载 。如果你使用的是WindowsMacOS ,则需要:

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

2.确保在 Docker 首选项中你有至少 5 GB 的专用内存(设置 -> 高级 或 *首选项 * ->资源 -> 高级

执行数据库migrations及打包前端资源:

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

(可选)使用示例数据填充数据库:

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

最后,为自己创建一个管理员帐户:

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

**
运行服务:**

使用以下命令运行Saleor:

docker-compose up

图片

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 基类,然后重写部分方法,比如下面这个例子重写了** postprocess_order_creation **方法,增加了订单创建时的一些操作:

# Python实用宝典
# 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):
        # 订单创建时的操作
        data = ...

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

**加载插件, 需要在 setup.py 进行配置来自动发现已安装的插件。要使插件可被发现,你需要设置entry_pointssaleor_plugins **字段, 并使用这个语法定义插件: ** 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 应用程序,包名(等号前的部分)将被添加到 Django 的**INSTALLED_APPS **中,以便你可以利用 Django 的功能,例如 ORM 集成和数据库迁移。

注意到我们前面订单创建时的操作使用了 .delay 的语法,这是 Celery 的异步任务。因为有些插件的操作就应该异步完成,Saleor 使用 Celery 并将发现 tasks.py 在插件目录中声明的所有异步任务:

# 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

上面这个**api_post_request **函数就是前面插件用到的异步任务,在插件调用delay方法后,这个任务将被塞到队列中异步执行。

好了,上面就是一个简单的插件开发例子,个人认为 Saleor 的开发模式还是很不错的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4244

    浏览量

    85618
  • 开源
    +关注

    关注

    3

    文章

    3235

    浏览量

    42359
  • python
    +关注

    关注

    55

    文章

    4777

    浏览量

    84404
  • Django
    +关注

    关注

    0

    文章

    43

    浏览量

    10361
  • Docker
    +关注

    关注

    0

    文章

    454

    浏览量

    11802
收藏 人收藏

    评论

    相关推荐

    [原创]低价出售笔记本电脑

    :索尼.微软.任天堂.神游科技我们的经营理念是开创一种全新的“网络+实体”、“商务+资讯”的商业模式我们的宗旨是“有你就有狼港电子商城”:你可以找到我们的实体,也可以找到我们的网络;你可以到我们商城
    发表于 03-20 15:20

    足不出户,电子元器件采购一站式服务

    本帖最后由 eehome 于 2013-1-5 10:07 编辑 足不出户,实现电子元器件采购咨询一站式服务!就在 天天电子商城www.365ele.com 。如果您想讨论技术问题,交流工程设计心得,就在巴布工程师论坛www.365ele.com/bbs
    发表于 06-01 22:21

    2012淘宝1元电子商城

    2012淘宝1元电子商城http://item.taobao.com/item.htm?id=***http://item.taobao.com/item.htm?id=18476888251
    发表于 07-04 21:46

    100%电子产品商城

    100%正品电子产品商城(斯兴商城),欢迎各位高手逛逛和
    发表于 08-29 22:55

    如果你正在用一款包含有ERP、电子商城、找货等应用的服务平台,里面有一些什么样的功能会让你有兴趣使用?

    如果现在有一款包含有ERP、电子商城、找货等应用的服务平台,里面有一些什么样的功能会让你有兴趣使用?商城是为商家定制的,前期建设和后期维护都不需要商家操心。
    发表于 05-25 10:30

    有没有坛友用过TI公司的DRV8301或8302驱动芯片

    都是在哪购买啊,淘宝上的比电子商城的要便宜,但是不知道靠谱不靠谱是不是正品啊
    发表于 08-08 21:37

    唯样商城——国内领先的电子元器件目录授权分销商

    初来乍到,先做个自我介绍。唯样是国内领先的电子元器件目录授权分销商,依托在线交易服务平台www.oneyac.com,实现“小批量、现货、样品”销售。我们的优势:1. 与300+ 知名品牌合作
    发表于 02-18 21:54

    Python在web应用实现部署的协议与实现协议的工具解析

    php的正式环境部署非常简单,改几个文件就OK,用FastCgi方式也是分分钟的事情。相比起来,Python在web应用上的部署就繁杂的多,主要是工具繁多,主流服务器支持不足,在了解Pytho
    的头像 发表于 02-09 09:26 5035次阅读

    精选10个Python开源项目

    过去一个月里,我们对近 250 个 Python 开源项目进行了排名,并挑选出热度前 10 的项目。
    的头像 发表于 11-12 09:47 6294次阅读

    简单:用Python让Excel飞起来

    简单:用Python让Excel飞起来
    发表于 05-25 10:46 54次下载

    传感器距离标志开源分享

    电子发烧友网站提供《传感器距离标志开源分享.zip》资料免费下载
    发表于 11-02 15:16 0次下载
    <b class='flag-5'>超</b>传感器距离标志<b class='flag-5'>开源</b>分享

    Python控制的机械臂开源分享

    电子发烧友网站提供《Python控制的机械臂开源分享.zip》资料免费下载
    发表于 02-03 10:06 3次下载
    <b class='flag-5'>Python</b>控制的机械臂<b class='flag-5'>开源</b>分享

    网络工程师学Python-开源自动化部署工具Fabric

    Python Fabric是一个基于Python开源自动化部署工具,可以简化管理远程服务器的过程。
    的头像 发表于 04-28 09:54 716次阅读

    关于两个Python开源识别工具的效果

    回复希望出一篇 OCR 相关的文章,今天尝试了一下 cnocr 和 tesseract 两个 Python 开源识别工具的效果,给大家分别讲讲两个工具的使用方法和对比效果。 1.准备 开始之前,你要确保
    的头像 发表于 10-17 11:36 643次阅读
    关于两个<b class='flag-5'>Python</b><b class='flag-5'>开源</b>识别工具的效果

    Python 如何一键转化代码为流程图

    Graphviz是一个可以对图进行自动布局的绘图工具,由贝尔实验室开源。我们在上次 Python 快速绘制画出漂亮的系统架构图 提到的diagrams,其内部的编排逻辑就用到了这个开源
    的头像 发表于 11-01 10:39 2118次阅读
    <b class='flag-5'>Python</b> 如何一键转化代码为流程图