将python脚本与html按钮和flask连接起来

0 人关注

我正在尝试创建一个网络应用程序,我对它相当陌生。我有一个Python脚本(file.py),用于转换用户选择的数据。它处理所有的输入和输出。

我正在使用flask(main.py)做服务器部分和html。我想在我的html代码中放置一个按钮,这样它就会开始执行file.py。有谁能帮助我提供一个关于这三者之间的连接的例子吗?

我看了其他的例子,但我无法重现它,因为它们做的是不同的事情。另外,file.py是相当大的,所以我想避免把它放到一个函数中。

编辑:不是在找flask的教程。我已经尝试了3种方法。

  • A shell pops up for half a second but the disappears. Then I'm redirected to a page which just has the text in my return statement in my html file
  • <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') 
        
    3 个评论
    这个问题太广泛了,不可能在 stack overflow 上的一个答案中涵盖。你应该看看关于构建网络应用的教程。也许一个好的flask教程就涵盖了你所需要的一切。你还需要学习html表单,并至少了解http工作原理的基本知识。
    从这里开始 youtube.com/watch?v=MwZwr5Tvyxo 并完成所有的视频。如果你仍然不确定,再回来。科里会给你所有的工具,我相信你将需要回答你的问题。
    你的按钮可以是一个 "表格 "的一部分,看看吧。 flask-wtf.readthedocs.io/en/stable/...
    python
    html
    web
    flask
    button
    A.G
    A.G
    发布于 2020-07-30
    2 个回答
    Seyi Daniel
    Seyi Daniel
    发布于 2020-07-30
    已采纳
    0 人赞同

    使用HTML锚点标签(即)是最简单的方法。下面是一个例子。

    <a href="your_flask_route">This is a link</a>
    

    但既然你选择了按钮,JavaScript就会派上用场。下面是一个例子(内联)。

    <button onclick="window.location.href='your_flask_route';">
      This is a link
    </button>
    

    然后在你的flask main.py文件中,你应该有这个。

    @app.route('/your_flask_route')
    def your_flask_route():