关于javascript:使用我网站上的按钮运行python脚本

Run python script with a button from my website

本问题已经有最佳答案,请猛点这里访问。

我目前正在尝试创建一个包含一个按钮的flask网站(目前)。如果我按那个按钮,我想从一个特定的路径或只是项目文件夹运行一个python脚本。我已经看到了一些关于同一主题的帖子,但它们都不能真正帮助我。

我已经有一些代码了。这是我的烧瓶应用程序.py

1
2
3
4
5
6
7
8
9
10
11
12
from flask import Flask, render_template, jsonify
import test

app = Flask(__name__)

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


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

这是我的index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!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">

   
       function goPython(){
           $.ajax({
             type: 'POST',
             url:"/test.py",
             //or some other path like /scripts/test.py
             dataType:"text",
             success: function (data) {
               alert(data)
             },
             error: function (data) {
               alert(data)
             }
           });
       }
   
 </body>
</html>

如果我运行我的flask网站并单击按钮,我想执行保存在我的项目文件夹或其他地方的test.py。我不知道这样做是否可行,或者是否有更好的解决方案。现在我还在尝试烧瓶,但我无法运行我的test.py。当我按下按钮时,它只显示一个带有[对象对象]的警告。

基本上,我要建立的是一个带有按钮的网站,就像一个在后台运行脚本的服务,有时需要花费更多的时间来完成。我不确定在这种情况下我是否误解了Ajax的用法。任何帮助都是好的。


在按钮按下时运行代码的一个简单的解决方案可能如下。如果您想在后台运行任务,可以查看芹菜或在烧瓶中穿线。

1
2
3
4
5
6
7
8
9
10
11
from flask import Flask, render_template, jsonify
import test

app = Flask(__name__)

@app.route('/', methods=['POST', 'GET'])
def index():
    if request.method =="POST":
        <insert python script here>

    return render_template('index.html')

将模板更改为:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <form  method ="post">
     <input type="button" id='script' name="submit" value="Run Script">
    </form>
  </body>
</html>


一些使用flask函数、jquery和bootstrap的示例(不需要,只用于按钮格式)。希望这能对你有所帮助。python(在应用程序脚本中):

1
2
3
4
5
6
7
    @app.route('/do_something')
    def do_something():
       """
        Do something on button press.
       "
""
        # your code
        return res

Javascript:

1
2
3
4
5
6
7
8
    var btnName = function(){
        $.get('/do_something',
             function(x){
                         $("#resBtnHere").html(x);
                         }
             )
    }
    btnName()

HTML中的按钮:

在HTML中,按按钮时的函数结果(如果需要):