如何从HTML表单按钮在服务器上执行Python代码

时间:2017-07-12 13:19:43

标签: python ajax button flask html-form-post

我想在用户单击HTML表单按钮时执行python代码。怎么可能?是否有可能用户无法在服务器上查看python代码?表单输入将是python代码中的变量。我正在使用Flask框架和python 2.7。安全性尚未引起关注。

我的route.py文件:

from pytube import YouTube
from moviepy.editor import *
import os

app = Flask(__name__)

@app.route("/",methods=['GET','POST'])
def landing():
    return render_template("index.html",ytdir=ytdir,ytlink=ytlink)

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

Template文件夹中的index.html:

<form method="POST" action="/">
<input type="text" class="form-control" name="ytdir" placeholder="Example: C:\Downloads">

<h4>The YouTube Video that you want to download</h4>
<textarea class="form-control" rows="3" name="ytlink" placeholder="Example: https://www.youtube.com/watch?v=HipaBLsGB_Y"></textarea>
</form>
<input class="btn btn-primary" type="submit" value="Download">

基本上,我有一个python代码,可以使用ytdirytlink将YouTube视频下载到本地驱动器。

我应该在哪里放置python代码,以便在单击按钮时执行它。

1 个答案:

答案 0 :(得分:0)

我建议您进行“api通话”

@app.route("/ytdl", methods=["GET"])
def download_video(link):
 # call your download code here 
 # and return the video as an input stream
 # read the flask tutorial on how to do that

在javascript中使用axios或者使用jquery下载文件的东西 像$button.click(() => axios.get(http://<localhost url>:<port>/ytdl)一样,再次阅读doc如何进行ajax调用