python - 使用 Django 从 HTML 模板执行 Python 命令

标签 python ajax django raspberry-pi

我正在使用 Django 为我的 Raspberry Pi 制作一个 Web 界面。

我正在尝试执行 python 代码,只需单击 Django 模板内的 HTML 按钮即可点亮显示屏。

我目前通过在命令行上运行以下命令来点亮 LED 显示屏:

cd rpi/
sudo python bubbles.py

执行该 ^ python 代码 不过我可能想根据 HTML ID 更改 .py 文件:

sudo python file_name.py

无论如何,这个脚本需要通过网络浏览器执行,所以我写了一个 View ......但我不知道如何将脚本链接到 View 。 我的模板:

graphics_list.html

{% extends "base.html" %}
{% block content %}
<h1>{{ title }}</h1>
<h1> Scrolling Raspberry Pi LED Selection </h1>
{% for obj in object_list %}

<h3><a href='{{ obj.get_absolute_url }}'>{{ obj.name }}</a></h3>

  <img src="{{ obj.image.url }}" alt="..." class = "img-responsive"><br>
  <p><a href="{{ need_to_execute_script_somehow }}" class="btn btn-primary" id = "{{ obj.name }}" role= "button">Use</a></p>

{% endfor %}
{% endblock content %}

我真的不知道从哪里开始,我应该使用 AJAX 吗,PHP?

最佳答案

我不会回答您的代码问题,而是回答您的方法问题。

要从 Internet 运行此脚本,您需要一个 Web 服务器。这将是处理您的 Web (HTTP) 请求的代理。这些有各种口味。 Django 是一个 Web 框架,旨在轻松创建复杂的网站。 Django 还附带一个 Web 服务器,用于提供其内容。

与您最相关的部分是:Django 对于您的目标来说太过分了。它可能会引起困惑,但如果您已经启动并运行它,最好还是坚持下去。如果您不习惯运行网络服务器,使用 Django 可能会节省您的时间。

我首先将问题分解为更小的目标,如下所示:

  • 启动 Django 网络服务器。当您从 Web 浏览器访问服务器时,足以看到某种 Django 示例页面。
  • 了解如何编辑 models.py,以便您可以“渲染”(在浏览器中显示)任何您想要的 View 。
  • 使上述 VIEW 具有指向另一个网址的链接(仍在您的网络服务器上)。这将触发向您的服务器发送不同 url 的请求。这个 url 将由 models.py 中的不同方法处理,这反过来又会渲染一些其他 View 。现在,想象另一个 View 显示“是的,您已经点亮了 LED”或“LED 照明已完成”。渲染此 View 所需的新方法将是您将代码挂入其中以运行脚本的位置。
  • 无需运行脚本,只需在控制台打印一些内容即可确保您的“ Hook ”正常工作。打印“***** 很快就会用运行我的脚本所需的内容替换它****”并在控制台中查找
  • 然后学习如何从 Django 执行 python,并将其放入其中。

解决方案在这里:Executing Python script from Django shell

AJAX 怎么样? Ajax 将为您带来轻微的用户界面改进。在你让核心解决方案发挥作用之前,我会完全忘记它。绝不需要从网络运行脚本。

关于python - 使用 Django 从 HTML 模板执行 Python 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37403708/

相关文章:

python - 使用 Django 的 post_save() 信号

python - 在 Django 中,如何查找属于字符串一部分而不是包含该字符串的术语?

python - 如何使用 python SDK 过滤 Azure 表中的特定行

ajax - 从后端重新渲染 wicket 组件

javascript - jQuery 设置 select 标签的值

django - pytest 和 Django 事务数据库

python - 从 python 子进程获取输出并向其发出命令

JavaScript 警报标题

python - Heroku & Django : "OSError: No such file or directory: '/app/{myappname}/static'"

django - 过滤 Django 管理员选择框的模型结果