如何从 html 按钮执行 python 脚本?

IT技术 javascript python html
2021-01-27 07:50:32

我在计算机上保存了许多 python 脚本,出于好奇,我创建了一个只有一个按钮的 html 文件。而不是进入终端并运行python <path to script>,我想让它在单击该按钮时启动我的一个 python 脚本。这可能/如何做到?

出于示例目的,我们将调用要运行的脚本MYSCRIPT.py我做了一些研究,但没有提出任何有希望的。我知道以下代码是不正确的,但这里是我的 html 文件的起点。

<!DOCTYPE html>
<html>
    <body>
        <head>

           <input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="exec('python MYSCRIPT.py');">

        </head>
    </body>
</html>
6个回答

有多种方法可以做到,非常简单的技术,安全无忧,这里可能会帮助你


1.首先你需要在你的命令提示符中安装Flask
pip install flask
,它是一个 python 微框架,不要害怕你需要有另一个先验知识来学习,它真的很简单,只有几行代码。 如果你希望你为新手快速学习 Flask,这里是我也从Flask 初学者教程 (YouTube) 中学习的教程

2. 创建一个新文件夹
- 第一个文件将是 server.py

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
  return render_template('index.html')

@app.route('/my-link/')
def my_link():
  print ('I got clicked!')

  return 'Click.'

if __name__ == '__main__':
  app.run(debug=True)

-2nd 在上一个文件夹中创建另一个子文件夹并将其命名为模板文件将是您的 html 文件
index.html

<!doctype html>


<head><title>Test</title> 
    <meta charset=utf-8> </head>
    <body>
        <h1>My Website</h1>
        <form action="/my-link/">
            <input type="submit" value="Click me" />
        </form>
        
        <button> <a href="/my-link/">Click me</a></button>

    </body>

3. . 要运行,打开命令提示符到新文件夹目录,键入python server.py运行脚本,然后转到浏览器类型localhost:5000,然后您将看到按钮。您可以单击并路由到您创建的目标脚本文件。

希望这有帮助。谢谢。

由于您要求一种在HTML页面内完成此操作的方法,因此我正在回答这个问题。我觉得没有必要提及随之而来的严重警告和影响..我相信你.py比我更了解你的脚本的安全性:-)

我会使用.ajax()中的jQuery函数。只要脚本位于可公开访问的 html 目录中,这将允许您调用Python脚本 ......也就是说,这是我告诉您注意安全预防措施的部分......

<!DOCTYPE html>
<html>
  <head>    
  </head>
  <body>
    <input type="button" id='script' name="scriptbutton" value=" Run Script " onclick="goPython()">

    <script src="http://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>

    <script>
        function goPython(){
            $.ajax({
              url: "MYSCRIPT.py",
             context: document.body
            }).done(function() {
             alert('finished python script');;
            });
        }
    </script>
  </body>
</html>

此外.. 值得注意的是,您的脚本必须具有适当的权限,例如,www-data用户才能运行它...... Achmod和/或 achown可能是必要的。

明白了。因此假设项目中涉及的唯一部分是一个带有按钮的简单 html 文件和一个从本地机器内运行 onclick 的 python 脚本......最大的安全问题是有人未经授权访问该文件。
2021-03-23 07:50:32
如果这是一个带有像flask或django这样正确的Web服务器的脚本,这主要是危险的吗?如果这只是在本地机器上运行脚本的同一目录中的一个简单的 html 文件和 python 文件......这不会危险,或者我错过了什么
2021-03-30 07:50:32
-这是编程.py,可以是安全风险,如果没有正确锁定文件。通常,如果它已经是框架的一部分,那么大多数安全问题已经在框架内得到解决。
2021-04-02 07:50:32
唯一的安全风险是所有服务器端文件都存在的风险。如果有人可以直接访问文件并操纵输入/注入以获得可能显示敏感信息的结果,例如服务器目录结构或数据库中的表。
2021-04-03 07:50:32
这不起作用。我收到 405 错误响应。我想我需要一个后端解决方案才能工作,因为从前端调用 .py 文件不起作用。
2021-04-12 07:50:32

这需要了解后端网站语言。

幸运的是,Python 的Flask 库是适合手头项目的后端语言。

从另一个线程查看此答案

最好的方法是使用 Python Web Frame Work 你可以选择Django/Flask我建议你使用Django,因为它更强大。这是完成任务的分步指南:

pip install django
django-admin createproject buttonpython

那么你必须在 buttonpython 目录中创建一个文件名 views.py 。

在views.py中编写以下代码:

from django.http import HttpResponse

def sample(request):
    #your python script code
    output=code output
    return HttpResponse(output)

完成后导航到 urls.py 并添加此节

from . import views

path('', include('blog.urls')),

现在转到父目录并执行 manage.py

python manage.py runserver 127.0.0.1:8001

详细分步指南:单击 HTML 按钮运行 Python 脚本

这是不鼓励和有问题但可行的。您需要的是自定义 URI 方案,即。您需要在您的机器上注册和配置它,然后将具有该方案的 url 挂接到按钮上。

URI 方案是 URI 之前的部分://例如,标准 URI 方案是httpsorftpfile但是有像 fx 这样的自定义。mongodb. 你需要的是你自己的,例如mypythonscript它可以配置为 exec 脚本,甚至只是在 params 中带有脚本名称的 python。这当然是灵活性和安全性之间的权衡。

您可以在以下链接中找到更多详细信息:

https://support.shotgunsoftware.com/hc/en-us/articles/219031308-Launching-applications-using-custom-browser-protocols

https://msdn.microsoft.com/en-us/library/aa767914(v=vs.85).aspx

编辑:添加了有关自定义方案是什么的更多详细信息。