我最近被要求帮助为一家小型企业实施库存监控。客户的店员需要快速确定特定商品的剩余库存量,但他的工作流程不允许他轻松检查库存数据库。我的想法是引入一个显示器,显示他关心的特定项目。为此,我决定使用 Flask 和 Python 制作一个基于 Raspberry Pi 的仪表板,以从 API 请求库存值并显示结果。

Flask 是一个用 python 编写的简单但功能强大的 Web 框架。它通常用于轻量级 Web 应用程序,但仍然可以通过 3rd 方插件扩展到更复杂的应用程序。它为您提供了用于可视化信息的 HTML Web 开发的灵活性,以及一个 Python 后端,使其非常适合这个小项目。这是我的过程的快速概述,其中包含一些示例代码,可帮助您开始使用 Flask 和 Python 制作自己的仪表板!

库存数据

我的客户的业务使用库存软件,幸好它带有自己的 API。结果,我能够简单地采用与 RESTful API 相同的方法,这里总结得很好。在这种情况下,API 非常简单,只包含一个返回所有库存项目的方法。我创建了一个名为Inventory的类来跟踪某些参数,并编写了一个简单的函数来从 API 请求库存数据。

https://gist.github.com/mason-landry/c527204cd81f41158c2c80ed8f9abe89

出于本演示的目的,我用虚假数据替换了所有 API 内容。

烧瓶

Flask 是一个围绕 Python 构建的 Web 框架。您可以编写 python 代码将信息传递给 HTML 文件并构建动态网页。

编写了基本的 API 接口后,我将它们加工成一个简单的 Flask 应用程序。app.py脚本非常简单,因为我们只需要一个没有备用路由或方法的静态网页。它与Flask 教程中介绍的默认Hello World应用程序仅略有不同。

https://gist.github.com/mason-landry/297912f36e5e8db9a0da3ea40072e4b8

我们可以使用我们的库存 python 脚本来生成库存项目并将它们传递给一个名为index.html的模板 HTML 文件。

神社/HTML

Flask 使用 Jinja 模板引擎,这意味着我们可以使用 for 循环和 if 语句来增加 HTML 的趣味性,让我们能够对内容的显示方式进行创意,我们将在后面看到。现在,让我们从一些简单的代码开始,将每个项目显示为一张普通的白卡。我们可以使用引导程序来快速设置卡片类。

https://gist.github.com/mason-landry/297912f36e5e8db9a0da3ea40072e4b8

此代码将我们的 8 个库存项目(在此虚拟示例中对应于 ID 1 到 8)显示为 8 个单独的卡片。 Bootstrap 在由 12 个单元组成的行中工作。因为我们告诉它为每张卡片使用col-3,所以在换行到下一行之前,页面上应该只有 4 张卡片。

请注意,在这种情况下,NumInStock 变量不是随机分配的。您应该看到不同的值。

格式化

现在我们可以为每个项目添加一些低库存阈值。使用 Jinja2 条件语句,我们可以根据库存水平更改卡片的颜色。在index.html的 for 循环中添加它们:

https://gist.github.com/mason-landry/ea2b8e7d041a3b0833cf768abd951284

最终结果

对于我的实际仪表板,我更改了配色方案,并使用客户的电子邮件服务器添加了一个简单的消息传递系统。使用 Flask 的美妙之处在于可以自由地做任何现代 html 可以处理的事情。将这种技术与更有趣的 JavaScript 片段结合起来,确实可以制作出一些非常酷的仪表板!

使用所有这些工具,我能够为客户的小型企业开发一个简单但有效的产品库存监控器。它是一个静态网页,每 60 秒刷新一次。它是他们的车间工人快速检查库存水平的有用工具,从而扰乱了他的工作流程。 Flask 和 HTML 为您提供了根据您的特定需求自定义仪表板所需的所有灵活性。我肯定会使用这种方法为未来的项目创建更详细和更复杂的仪表板。

image.png

我希望这能让您深入了解使用 Flask 和 Python 创建仪表板是多么容易!

资源

1.烧瓶

2.RESTful APIs

Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐