当前位置: 首页 > 编程日记 > 正文

python开源商城_Leaf - 一个开发友好、功能完备的开源微信商城框架

Leaf - 开源微信商城系统框架

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e352532422d6f72616e676568747470733a2f2f696d672e736869656c64732e696f2f62616467652f50794c696e742d392e383925324631302d627269676874677265656e68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7479706568696e74696e672d737570706f72742d626c756568747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865322d626c7565

logo.png?raw=true

Leaf 旨在实现一个对普通用户易用、对开发者友好的 轻型 开源 CMS 框架;Leaf 基于 Python3.5+ 构建,后端使用 Flask 作为基础框架、mongoengine 进行数据库建模。

我们希望能减少普通用户搭建微信商城的成本,同时为有开发能力的朋友提供更多样化的功能。

Leaf 当前的开发仍在进行当中,最新的代码变动请参考 dev 分支

安装及使用

安装

您可以在此直接下载我们最新版本的源代码进行安装

请注意,在正式版本发布之前,在代码分支 dev, beta 的代码都不可用于生产环境

将要支持:pip install wxleaf - 此功能待稳定版本产出后增加

使用

import leaf

import config

init = leaf.Init()

init.kernel()

# 可选项 - 模块请根据自己需要加载

# 请注意:非稳定版本的模块可能会有变动

# 关于模块之间的相互依赖,请参阅文档

init.logging(config.logging)

init.server()

init.database(config.database)

init.plugins(config.plugins)

init.weixin(config.weixin)

init.wxpay(config.wxpay)

# 运行服务器

leaf.modules.server.run()

示例配置文件请参考 config.py

特性介绍

For Users

Leaf 希望能够给没有开发能力的普通用户提供一个基础的、易于使用和管理的微信商城系统。 如果您是没有开发经验的普通用户,Leaf 可以提供给您:

微信公众平台的接口使用能力 即使您没有开发经验,也可以在我们的可视化后台中轻松地编辑多媒体文章、设置群发消息、管理用户/组、设置自动回复等等。

主流支付接口的使用能力 如果您有微信支付及支付宝支付等主流支付接口的使用权限,您可以在我们的后台中轻松配置支付方式,即时应用在您的交易当中。

完善的用户/组/权限管理系统 Leaf 实现了基于角色的用户权限控制,通过在可视化后台中对用户的角色进行编辑,您可以轻松地配置多个用户组以分配工作 —— 管理员、编辑、库存管理员、甚至普通用户都可以进行分组。

产品/库存/订单管理 Leaf 中集成了产品、商品库存、订单管理的功能,您可以轻松地管理 SKU/SPU 以及订单等信息。

插件扩展能力 您可以在我们的项目网站上寻找合适您需求的插件。 通过简单的单击按钮,您就可以启用或者禁用这些扩展,插件也可以使用上述的能力 —— 您可以使用插件设置定时任务,来进行微信推送、也可以使用插件来扩展商城功能,设置促销等等...

For Developers

如果您有开发能力,Leaf 则能带给您更多可能,通过简单的二次开发,您可以使用到她的更多高级功能,下面是您可能感兴趣的部分:

功能特性

任务计划支持 不需要第三方的组件,您可以在开发过程中调用 leaf.core.schedule 模块,她可以帮助您实现 轻量级 的任务计划调度。

事件机制 您可以在代码的任何地方创建一个事件实例,通过 events.hook 方法可以将您的动作挂载到事件上,当事件发生时您的动作将会自动运行。

日志与错误系统 Leaf 基于 logging 包实现了较为完善的日志系统,同时定义的异常基类规范了系统中的异常使用。您只需要在您的代码中继承 leaf.core.Error 类,就可以在日志、API网关中得到详细的错误栈信息。

权限控制 正如上面在介绍所说,Leaf 实现了基于用户角色的权限控制,您也可以像系统应用一样定义自己的接入点,并通过简单的装饰器控制。

插件系统 插件系统是 Leaf 扩展性的重要保证。在 Leaf 中您可以:

热插拔 地管理插件,代码的更改变动可以仅通过一次插件重入得到部署;

插件可以像在Flask的应用中设置路由一样,通过简单的装饰器控制视图路径、权限、访问IP等等

插件可以调用系统中其余的资源(包括事件调度、日志、微信能力、数据库,甚至是其他插件的资源)

开发特性

关于注释 我们深知没有注释的代码等于天书这个道理,为了方便您的二次开发,Leaf 从核心模块到视图函数都有详细的注释。

关于文档 对于一些重要的系统功能,Leaf 会编写专门的文档进行说明 —— 例如如何开始您的插件开发,必要的地方还会配有插图,用于方便您的理解。

类型提示 Python 从 3.5 版本之后支持了类型提示 type hinting,而我们则尽可能的在代码的各个部分使用这项全新功能,配合 Visual Studio 等 IDE,帮助您更轻松的开发。

代码风格 Leaf 在开发过程我们尽可能的维持一致的代码风格,并且设置 commit-Hook 使用 PyLint 进行代码评分 —— 带目前为止,Leaf 获得的评分在 9分 以上,我们知道评分不能代表一切,但是仍希望能够做的更好。

代码示例

古人说: 纸上得来终觉浅,绝知此事要躬行。

我们会编写一些示例代码助于开发者的理解。 例如您可以在 Leaf 的任意版本中找到示例插件的代码,相信会更有助您的二次开发。

Other

Wanted

Leaf 仍在开发当中,仍有很多不完美的地方,希望大家能够在 Issue 中提出,帮助她变得更好。

Leaf 到现在还没有一个合适的 Logo, 希望各位能够帮助

Leaf 的后端工作已经接近完成,现在需要前端/美工小伙伴们的支持,将它变成一个好看的全栈项目。

Todo

完善 JWT Token 的鉴权流程,实现 api.wraps.require 装饰器 - 一周内 (已完成)

完成用户/组/权限/访问点相关的 CRUD 以及视图函数 - 近期

完成 SKU/SPU 的 CRUD 以及视图函数 - 近期

完成订单模块的 CRUD 以及视图函数 - 近期

完善微信公众平台的 API 支持 - 两个月内

完成微信支付相关错误码收集 - 两个月内

编写给前端同学的 API 文档 - 三个月内

编写单元测试 - 三个月内

编写给后端同学二次开发的文档 - 三个月内

架设属于 Leaf 自己的官网、插件市场 - 有生之年

To be continued...

Contributors

祝您使用愉快 ;)

相关文章:

Github配置(git+vscode+python+jupyter)

①下载git 打开 git bash 工具的用户名和密码存储 $ git config --global user.name “Your Name” $ git config --global user.email "emailexample.com" $ git config --global credential.helper store 注意:邮箱必须与 GitHub 注册邮箱一致 以后&a…

1.2 - C#语言习惯 - 用运行时常量readonly而不是编译期常量const

C#中有两种类型的常量:编译期常量和运行时常量。二者有着截然不同的行为,使用不当将会带来性能上或正确性上的问题。 这两个问题最好都不要发生,不过若难以同时避免的话,那么一个略微慢一些但能保证正确的程序则要好过一个快速但不…

2018-3-6 (论文—网络评论中非结构信息应用于研究)笔记-----论文中的特征抽取的模型算法

整体的流程 网络评论预处理------------------->>>>>>利用相关性特征得到网络评论特征抽取的模型算法 特征提取算法模型: 论文46 马尔科夫链(Markov blanket) 具体的意义不懂 特征冗余&#xff…

从头开始学习Adobe Photoshop CC图像编辑

完整课程,涵盖所有关于Adobe Photoshop CC的基本课程 你会学到什么 课程获取:从头开始学习Adobe Photoshop CC图像编辑-云桥网 Photoshop用户界面之旅 转型导论 项目管理 图层面板简介 基本图层属性 混合模式 不可或缺的层效果 投影、内部发光和外部发光…

hbase shell命令_HBASE的shell操作

前言我们知道hbase其实是架构在hdfs上的一个分布式数据库,既然是数据库那么这篇文章就主要围绕着我们最熟悉的增删改查来做。当然了,其实hbase的shell操作在真实的企业中几乎不用,这个很简单,我们的hbase是用来存贮海量数据的&…

BOM、定时器

BOM、 window:frames; history; location; navigator; screen; docunment( anchors; forms; images; links; location; ) 1.定时器 setTimeout 指定函数几秒后运行setInterval 可重复运行指定几秒运行 2.弹对话框 alert 会产生阻塞 confirm 有“确定”或“取消”按钮&#xf…

mysql 树形结构_再读MySQL索引-《高性能MySQL》索引手记

最近工作中经常和MySQL打交道,当数据量小的时候,不同查询方式以及是否使用索引并无大碍,当数据量随着业务的成长急剧加速时,索引的重要性不言而喻。本篇文章以《高性能MySQL》中的索引章节为基础,加之个人对索引的理解…

下午就要考试啦~~附上自己做的考试范围

第一章 测试是否有必要 有。毕竟成本低 什么是软件的质量?(测试检测的是软件的质量,那么是什么软件的质量) 外部质量:用户可感知的,[功能、可靠、易用、效率] 内部质量:代码风格、内聚性、耦合性…

Unity 创建2D平台游戏开发学习教程

了解如何使用C#在Unity中创建您的第一款2D平台游戏 你会学到什么 使用Unity创建2D奥运会 使用可脚本化的对象和单一模式 使用良好的编程实践 创造武器和射弹 使用可脚本化的对象和委托模式创建强大且通用的人工智能 创造具有多重能力的角色 创建级别组件 MP4 |视频:h264&…

Solr和lucene

1. Solr 是什么? Solr它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括XML/XSLT和JSON等格式)。它易于安装和配置&#xf…

django 链接地址匹配流程

前提&#xff1a; 代码结构 步骤一&#xff1a; 下面为某个网页的链接地址 <body> {% if latest_article_list %}<ul>{% for article in latest_article_list %}<li><a href"/blog/p/{{ article.id }}/">{{ article.title }} </a><…

【Datawhale-Python】Task1

1.环境搭建 略&#xff08;见之前博客&#xff09; 2.python初体验 ①print&#xff08;&#xff09; 略 ②input&#xff08;&#xff09; Python3.x 中 input() 函数接受一个标准输入数据&#xff0c;返回为 string 类型。 >>> ainput() 2 >>> a 23.…

Android高手速成

第一部分 个性化控件(View) http://www.cnblogs.com/huwei0814/p/3796659.html 第二部分 工具库 http://www.cnblogs.com/huwei0814/p/3796670.html 第三部分 优秀项目 http://www.cnblogs.com/huwei0814/p/3796673.html 第四部分 开发工具及测试工具 http:/…

Texlive安装与环境变量配置

下载安装&#xff1a;https://www.jianshu.com/p/25896cc05cb4 去官网下载速度很快 环境变量配置&#xff1a;https://www.jianshu.com/p/f8f6c255098c

2018-3-7论文网络评论中非结构化信息的表示与研究--------实验分析

数据来源&#xff1a; &#xff08;1&#xff09;电子商务网站提供的网路评论 &#xff08;2&#xff09;专门提供网络评论交流平台的网络 &#xff08;3&#xff09;文章中使用的数据为网上某商城关于“某品牌中的一种型号纸尿裤&#xff08;价格75RMB&#xff09;”的2526…

3dmax Vray建筑可视化入门学习教程

面向初学者的3Ds Max Vray最佳Archviz可视化课程 从安装到最终图像的一切都将从头开始教授&#xff0c;不需要任何经验 大小解压后&#xff1a;3.25G 时长4h 6m 1280X720 MP4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 课程获取&…

javascript与浏览器学习(一)

待学习………… 20160421 标题&#xff1a;JavaScript中浏览器兼容问题 博客地址&#xff1a;http://www.cnblogs.com/DF-fzh/p/5408241.html 简单学习。 转载于:https://www.cnblogs.com/Tpf386/p/5416390.html

idea运行jsp显示源码_基于jsp+mysql+Spring+mybatis的SSM在线个人PC电脑商城平台网站系统...

运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。IDE环境&#xff1a; Eclipse,Myeclipse,IDEA都可以tomcat环境&#xff1a; Tomcat 7.x,8.x,9.x版本均可硬件环境&#xff1a; windows 7/8/10 1G内存以上主要功能说明&#xff1a; 管…

Dosbox+Masm汇编语言

一篇很不错的教程: https://bingyishow.top/Technical-article/54.html

hypervisor简介

什么是hypervisorhypervisor为操作系统提供独立的虚拟硬件平台&#xff0c;而虚拟硬件平台反过来又提供对底层机器的虚拟的完整访问。hypervisor之于操作系统类似于操作系统之于进程。虚拟化和hypervisor关于什么是虚拟化&#xff0c;请参考我的另一篇博客《虚拟化技术介绍》&a…

非结构化信息-》半结构化-》结构化-》关联数据体系-》数据挖掘-》故事化呈现-》决策导向

非结构化数据介绍来源&#xff1a; 非结构化信息_百度百科 https://baike.baidu.com/item/%E9%9D%9E%E7%BB%93%E6%9E%84%E5%8C%96%E4%BF%A1%E6%81%AF/2002521?fraladdin 总的来说&#xff0c;目前非结构化数据越来越多&#xff0c;怎么提取其中价值信息&#xff1f;&#xff…

元宇宙:基础-虚拟现实栈开发和虚拟土地

元宇宙——如何使用NFTs构建虚拟角色、虚拟环境、空间特征、虚拟土地的沉浸式购买 你会学到什么 元宇宙:从虚拟现实到虚拟双胞胎的基本概念 元宇宙:全栈开发&#xff0c;包括头像、传送、互操作性和隐私 元宇宙:如何建立元宇宙(地平线市场)景观&#xff0c;娱乐&#xff0c;游…

oracle数据库连接设置配置文件

转载于:https://www.cnblogs.com/Ly426/p/5416588.html

python3.7.1安装教程详细_CentOS 7 安装python3.7.1的方法及注意事项

安装wget yum -y install wget 创建一个download目录用于下载各种安装包 mkdir download 切换到刚创建的download目录中 cd download 下载python3.7.1 解压 tar -zxvf Python-3.7.1.tgz 切换到刚刚解压得到得文件夹 cd Python-3.7.1 安装配置 ./configure 注意&#xff0c;我这…

Docker部署SpringBoot项目详细部署过程

​ Docker可比喻成一个装应用的容器,将应用及其依赖文件、数据等打包在容器内,直接运行容器即可把应用运行起来,而无需关心环境配置问题。​ 本文记录个人学习Docker的总结内容,安装、配置和部署等内容,在过程中,应注意命令不要写错,加上Docker插件等问题,若出现理解不到位的地方,请多指出。

简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】

博客目录&#xff08;阅读时间&#xff1a;10分钟&#xff09;一.win100.系统环境1. win10配置golang环境①下载相关软件②创建gowork工作空间③配置环境变量&#xff08;GOPATHPATH&#xff09;④验证环境配置结果2. win10配置vscode go环境①安装vscode的go插件②尝试运行③v…

安卓 画板 学习笔记

2019独角兽企业重金招聘Python工程师标准>>> 代码片段 package com.tang.paint;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream;import android.app.Activity; import android.app.ActionBar; import android.app.Fr…

2018-3-7 Hadoop简介1(名字的由来,以及基本的结构)

问题一&#xff1a;什么是云计算&#xff1f; 实际上是提供的一种服务&#xff0c;这个服务的特点是&#xff1f; 主要是按需分配 云计算_百度百科 https://baike.baidu.com/item/%E4%BA%91%E8%AE%A1%E7%AE%97/9969353?fraladdin 什么是大数据&#xff1f…

MAYA 2022基础入门学习教程

流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:AAC&#xff0c;48.0 KHz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小解压后:3.41 GB |时长:4.5小时 包含第一部分和第二部分课程 课程获取&#xff1a;MAYA 2022基础入门学…

[Ubuntu 22.04] Docker安装及使用

容器的生命周期由用户控制,用户可以选择手动删除容器或让其保留在系统中以供之后使用。选项允许你在容器内部创建一个交互式的终端会话,使你可以像在本地终端一样与容器进行交互。你可以在容器内执行命令,查看输出并输入命令。镜像拉取完成后,可以使用以下命令创建并启动一个基于 Ubuntu 20.04 镜像的容器。列出所有正在运行的容器,并显示它们的容器ID、镜像、命令、创建时间、状态等信息。以下命令可以中止容器,改命令将向容器发送一个停止信号,使其正常停止并退出。这将显示所有容器的列表,包括正在运行的和已停止的容器。