【问题标题】:how run a python script with a html button?如何使用 html 按钮运行 python 脚本?
【发布时间】:2019-08-16 16:59:44
【问题描述】:

我只想通过单击 html 按钮来运行 python 脚本。 python脚本真的很简单。当你运行它时,它只会在我的数据库中添加一个“姓名”和“年龄”数据。

import sqlite3

conn = sqlite3.connect('bdaremplir.sqlite')
cur = conn.cursor()

"""cur.execute('DROP TABLE IF EXISTS latable')
cur.execute('CREATE TABLE latable (noms TEXT, age INTEGER)')"""



nom = 'TheName'
age = 100

cur.execute('''INSERT OR IGNORE INTO latable (noms, age) VALUES ( ?, ? )''', (nom, age))
conn.commit()

以及 html 的基础知识

<!DOCTYPE html>
<html>
    <head>
        <title>visualisateur</title>
    </head>
    <body>
        <button></button>
    </body>
</html>

现在从这里开始,我完全无法做到。 如果有人可以帮忙...谢谢。

【问题讨论】:

  • 您需要使用 Emscripten 编译您的 Python,或者使用 Python 的 JavaScript 解释器,或者向服务器发送请求并在服务器端运行 python。但是,请记住,由于数据库存在于服务器端而不是客户端,您将能够在客户端运行该代码。
  • 除非我遗漏了有关系统的某些内容(您似乎只有这两段代码),否则您还需要其他几个组件。我认为从像 Flask 这样的简单 Web 框架开始可能是最好的选择。
  • 要在服务器上运行 Python 代码,您需要学习 Django、Flask 或 Bottle 等框架。我只用过 Bottle - 它既简单又轻便,我强烈推荐它。

标签: python html button


【解决方案1】:

Web浏览器只知道如何运行JavaScript,不知道Python,所以除非你真的想在浏览器中运行Python1,否则你必须了解the client-server architecture of the web

基本上,你必须

  1. 使您的 Python 程序可用作 Web 服务器,并且
  2. 单击 HTML 按钮时向该服务器发送请求。

运行网络服务器

有很多方法可以在 Python 中实现 Web 服务器。当您开始编写适当的应用程序时,您可能希望使用像 Flask、Django 或其他库这样的库。不过要快速上手,可以use the built-in Python HTTP server with CGI

  1. 创建一个名为 handle_request.py 的 Python 脚本,其内容如下:

    #!/usr/bin/env python3
    print("Content-Type: text/plain\n")
    print("hello world")
    

    并将其放入您的 HTML 文件旁边的 cgi-bin 目录中,并确保您可以通过在控制台中键入“handle_request.py”来运行它;

  2. 运行内置的 HTTP 服务器:

    python3 -m http.server --bind localhost --cgi 8000
    
  3. 在浏览器中打开http://localhost:8000以访问服务器。

您应该会看到目录列表,包括您的 HTML 文件和cgi-bin 目录。单击 HTML 文件应将其显示在浏览器中(带有类似 http://localhost:8000/test.html 的 URL),打开 http://localhost:8000/cgi-bin/handle_request.py 将运行我们创建的脚本并将其响应显示为网页。您可以将代码添加到脚本中,只要浏览器访问其 URL,它就会运行。

从您的网页发出请求

现在的问题是如何让浏览器在点击页面上的按钮时访问http://localhost:8000/cgi-bin/handle_request.py URL。

为此,您需要调用 API 以从 JavaScript 发出请求。有不同的方法可以做到这一点(例如XMLHttpRequestjQuery.ajax()),但在现代网络浏览器中工作的简单方法是fetch()

<button id="mybutton"></button>

<script>
document.getElementById("mybutton").onclick = async function() {
  let response = await fetch("http://localhost:8000/cgi-bin/handle_request.py");
  let text = await response.text();
  alert(text);
}
</script>

现在,当您单击该按钮时,浏览器将向指定的 URL 发出请求(从而运行您的脚本),但结果不是在选项卡中显示为网页,而是对您的 JavaScript 可用。

注释

1 ...此时您可能不知道,但如果您这样做,请参阅the pointers by Michael Bianconi

【讨论】:

    猜你喜欢
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-09
    • 2021-10-16
    • 2018-01-28
    • 2021-06-09
    • 2022-12-25
    • 2011-09-08
    相关资源
    最近更新 更多