首页 > 解决方案 > 我正在尝试使用本地托管的 Django 网络服务器的 HTML 按钮来执行我本地机器上的 python 脚本,但我很难过

问题描述

所以,我对 Django、python 和 javascript 还是很陌生。

我有一个部分功能的 Django 网络服务器,在开发它时,我在我的机器上本地托管。

我用 HTML 制作了一个按钮,我发现它可以绑定到一个 javascript 脚本。对我来说,下一步是让这个按钮“执行”一个位于我机器上的 python 脚本,特别是在 /desktop 目录上。我当然可以移动脚本,但重要的是我希望 python 脚本(我们称之为 django_test_script.py)在我的机器上打开它自己的窗口。它只是一个在标准输出中显示“hi”的文件,然后在 5 秒后关闭,但由于整个项目的计划,我希望这种情况发生。我想让我的网站在我的机器上打开,单击该按钮,然后在我的桌面上弹出脚本的控制台并运行/完成。

最终目标是控制插入我的树莓派的 LED 灯条。我想要网站上的彩色按钮,当单击时,运行适当的 python 脚本,将灯变为该颜色。我自己编写会改变颜色的 python 脚本不会花很长时间,但我需要弥合“按钮导致 py 脚本运行”和实际运行的 python 脚本之间的差距。

我看到很多与此类似的问题,但它们似乎都涉及在网络服务器中运行 python 脚本,比如执行所有操作的内部文件,然后通过 HttpResponse 将某些内容返回到服务器。

我不需要 HttpResponse。从字面上看,我现在要做的就是弄清楚如何使存储在机器上的脚本运行。

我已经阅读了一些关于 AJAX 的内容,我猜这涉及到,但是我尝试过的所有 AJAX 都失败了,因为实际上让服务器运行脚本。我已经在互联网上搜索了一个多小时,基本上没有发现任何有用的东西(据我所知),所以我想我不妨寻求帮助。有人可以就我需要做的事情指出我正确的方向吗?

标签: javascriptpythonhtmldjango

解决方案


恐怕这是不可能的。浏览器不允许执行本地脚本,因为所有内容(出于安全原因)都在沙箱中。如果要执行某些操作,可以执行以下操作之一:

  • 使用执行脚本并通过 AJAX 调用它的 http 服务器
  • 您将它构建到一个 exectron / nodejs 应用程序中,这为访问系统提供了更多可能性。看这个例子

但是根据您的要求,我假设该网站将在另一台设备上打开以远程控制 Pi led?如果您需要使用某种 http 服务器,否则您无法在 pi 本身上运行脚本。


推荐阅读