我正在使用 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/