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中,按按钮时的函数结果(如果需要):