我正在尝试创建一个网络应用程序,我对它相当陌生。我有一个Python脚本(file.py),用于转换用户选择的数据。它处理所有的输入和输出。
我正在使用flask(main.py)做服务器部分和html。我想在我的html代码中放置一个按钮,这样它就会开始执行file.py。有谁能帮助我提供一个关于这三者之间的连接的例子吗?
我看了其他的例子,但我无法重现它,因为它们做的是不同的事情。另外,file.py是相当大的,所以我想避免把它放到一个函数中。
编辑:不是在找flask的教程。我已经尝试了3种方法。
<form action="/pic" method="POST">
<input type="submit" value="GET THE SCRIPT">
</form>
在我的main.py flask文件中
@app.route('/pic', methods=['GET', 'POST'])
def pic():
os.system("python file.py") #file.py is the script I'm trying to start
return "done"
Doesn't do anything at all.
in html file:
<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: "/scripts/file.py",
context: document.body
}).done(function() {
alert('finished python script');;
</script>
I get a GET "/scripts/file.py HTTP/1.1" 404 message. I have my scripts folder in the same directory as my templates folder. Also tried placing the scripts folder inside the templates folder.
in html
<form action="/run" method = "POST">
<input type="button" id='script' name="submit" value="Run Scripttttttt">
</form>
在flask main.py中
@app.route('/run',methods=['GET', 'POST'])
def index():
def inner():
proc = subprocess.Popen(
['python file.py'],
shell=True,
stdout=subprocess.PIPE
for line in iter(proc.stdout.readline,''):
time.sleep(1)
yield line.rstrip() + '<br/>\n'
return Flask.Response(inner(), mimetype='text/html')