Python 如何在FLASK视图中包含多个HTML表单?

Python 如何在FLASK视图中包含多个HTML表单?,python,html,forms,python-2.7,flask,Python,Html,Forms,Python 2.7,Flask,我正在使用python 2.7和flask(我的第一个)构建一个小型web应用程序 我试图在一个flask视图中包含三个HTML表单,以便将所有三个表单都放在一个网页上: 一个允许数据上传的表单(将是XML文件) 启动python进程的一个按钮,该进程对XML文件执行分析 一个按钮,允许下载步骤2的结果 当我让它工作时,当为三个步骤中的每一个使用单独的视图时,当试图在一个视图中包含所有三个步骤时,我不知何故无法完成它。有人知道我做错了什么吗 这是到目前为止我的代码。HTML代码包含在python

我正在使用python 2.7和flask(我的第一个)构建一个小型web应用程序

我试图在一个flask视图中包含三个HTML表单,以便将所有三个表单都放在一个网页上:

  • 一个允许数据上传的表单(将是XML文件)
  • 启动python进程的一个按钮,该进程对XML文件执行分析
  • 一个按钮,允许下载步骤2的结果
  • 当我让它工作时,当为三个步骤中的每一个使用单独的视图时,当试图在一个视图中包含所有三个步骤时,我不知何故无法完成它。有人知道我做错了什么吗

    这是到目前为止我的代码。HTML代码包含在python脚本中。使用模板对我也没有帮助。HTML页面正在运行,但按钮不执行任何操作

    ...
    @app.route('/PAM', methods=['GET', 'POST'])
    def start_PAM():
        if request.method == 'POST':
            if "Upload" in request.form.values():
                    file = request.files['file']
                    if file and allowed_file(file.filename):
                        filename = secure_filename(file.filename)
                        file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                        print "File upload complete !!"
                        return redirect('/PAM')
            elif "Start PAM" in request.form.values():
                    import os
                    os.system("D:\Python_Test\PAM\PAM_1st_Try.py")
                    print "PAM Process Finished!!"
                    return redirect('/PAM')
            elif "Download" in request.form.values():
                    filename = "FILE.XML"
                    return redirect(url_for('download_file', filename=filename))
    
        return '''
        <!doctype html>
        <title>Start PAM Process</title>
        <h1>XML Upload</h1>
        <form action="" method=post enctype=multipart/form-data>
          <p><input type=file name=file>
             <input type=submit value=Upload>
        </form>
        <p><h1>Start the PAM Process</h1>
        <form name='Start PAM' method='POST'>
        <p><input type="submit" value="PAM" class="submitButton"/>
        </form>
    
        <p><h1>Download Result</h1>
        <form name='Download' method='POST'>
        <p><input type="submit" value="Download" class="submitButton"/>
        </form>
        '''
    
    @app.route("/downloads/<filename>")
    def download_file(filename):
        return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)
    
    app.debug = True
    if __name__ == '__main__':
        app.run()
    
    。。。
    @app.route('/PAM',methods=['GET','POST'])
    def start_PAM():
    如果request.method==“POST”:
    如果在request.form.values()中“Upload”:
    file=request.files['file']
    如果文件和允许的文件(file.filename):
    filename=secure\u文件名(file.filename)
    保存(os.path.join(app.config['UPLOAD\u FOLDER'],文件名))
    打印“文件上传完成!!”
    返回重定向(“/PAM”)
    request.form.values()中的elif“Start PAM”:
    导入操作系统
    系统(“D:\Python\u Test\PAM\PAM\u 1st\u Try.py”)
    打印“PAM进程已完成!!”
    返回重定向(“/PAM”)
    elif request.form.values()中的“下载”:
    filename=“FILE.XML”
    返回重定向(url_for('download_file',filename=filename))
    返回“”'
    启动PAM进程
    XML上传
    
    启动PAM进程
    
    下载结果
    
    '''
    @app.route(“/downloads/”)
    def下载文件(文件名):
    从_目录返回发送_(app.config['UPLOAD_FOLDER'],文件名,如_attachment=True)
    app.debug=True
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    app.run()
    
    我认为您缺少的步骤是为表单分配操作。目前HTML不知道如何处理表单


    首先为什么要这样做?您的第一个设计(3个独立的函数)更加直观和可扩展。即使这三个操作是相关的,这也不是将所有代码放在同一位置的原因。我想在一个网页中显示这三个HTML表单。除了将三个视图合并为一个视图之外,还有更好的方法吗??对不起,如果这是个愚蠢的问题。还是个新手。谢谢你的提示。我以前在使用HTML模板时定义过操作。不幸的是,它没有起作用。我现在再次尝试使用嵌入的HTML代码,但它也不起作用。按下按钮什么也不做。看起来HTML正在将信息发送到python脚本,但脚本没有接收信息。