【问题标题】:Is there any way to run a basic python code in an html weboage?有没有办法在 html 网页中运行基本的 python 代码?
【发布时间】:2021-08-08 19:40:37
【问题描述】:

我看到另一个类似的问题,How to run python script in HTML?,但我没看懂。我只是想知道如何在 html 页面中运行一个超级简单的输入测试代码,有人知道怎么做。我关注了一些 YouTube 视频,但没有一个有效。我只想在一个基本的 html 页面中运行这段代码:

a = input("What is your favorite color?")
print(a)

有没有简单的方法来运行 python 代码?谢谢!

【问题讨论】:

  • 简单的答案是否定的。 Python 可用于生成要发送到客户端的页面,但不能在页面显示时在客户端上运行。
  • 浏览器不支持 Python。我相信有一个项目可以通过 Javascript 解释和运行 Python 代码,但我不知道它的当前状态。除了极其特殊的情况外,这样做也有些可笑。

标签: python html


【解决方案1】:

为了在 Python 中实现 HTML(& JS)(可能正好相反),我使用pywebview
不过,我一直在本地测试,从来没有上传到服务器。

关于您的代码:
您不需要 Python,您可以在 JavaScript 中完成。

但是,由于问题是关于 Python 的,我将在此处向您展示 PyWebView 的流程:

<!DOCTYPE html>
<html>
    <body>
        <input id="input_field" />
        <button onclick="getAnswer()">
            <p>Get an answer</p>
        </button>
        <div id="response-block">
            <p id="response-block-text"></p>
        </div>
        <script>
            function getAnswer() {
                var inputField = document.getElementById('input_field').value
                pywebview.api.show_response(inputField).then(showResponse) 
            }
            function showResponse(response) {
                var showResponseText = document.getElementById('response-block')
                showResponseText.innerText = response.message
            }
        </script>
    </body>
</html>
import webview


class Api:
    def __init__(self):
        self._window = None

    def set_window(self, window):
        self._window = window

    def show_response(self, inputField):
        response = {'message': inputField}
        return response


if __name__ == '__main__':
    api = Api()
    window = webview.create_window('Color', 'path/to/html-file.html', js_api=api)
    webview.start()

解释:
您要做的第一件事是创建一个 HTML 文档。 在本文档中,您将创建一个 input field 并为其指定一个任意 ID(在本例中为 input_field)。您还需要一个按钮来发送输入和一个返回值的文本字段。
在 JavaScript 部分设置了一个函数,该函数在按下按钮时执行。使用.value 搜索输入字段的值。
我们这个传递给我们的PyWebView API,所以输入字段的内容被传递给Python。我们在函数show_response(self, inputField) 中为我们的返回值-文本字段编写响应消息。
使用return response,消息被传递回JS(即function showResponse(response))。在此函数中,我们指定应显示返回文本的位置。如果设置,则可以使用.innerText 输出消息。

【讨论】:

    【解决方案2】:

    Python 是一种主机端语言,在服务器上运行。它不能在您的网络浏览器(“客户端”)上运行,而 JavaScript 和 TypeScript 等语言在这些浏览器中占主导地位。

    【讨论】:

    • 为了迂腐,浏览器也不支持 TypeScript……
    【解决方案3】:

    我从未在生产中使用过它,但我之前使用过brython,它可以满足我的需要。

    【讨论】:

    • 什么是 bryhton 可以得到输入
    • Brython 是 JavaScript 中的 Python 3 实现。您将他们的 js 库包含在您的 html 中,然后您可以使用 &lt;script type="text/python"&gt;&lt;/script&gt; 作为输入,它可以使用他们的 python 库查询 html 输入标记的状态。您应该快速查看他们的文档。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2011-05-16
    • 2020-09-18
    • 2020-04-17
    相关资源
    最近更新 更多