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

时间:2014-02-12 15:07:30

标签: python html forms python-2.7 flask

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

我尝试在一个视图中包含三个 HTML表单,以便在一个网页上显示所有三个表单:

  1. 允许数据上传的一种表单(将是一个XML文件)
  2. 启动python进程的一个按钮,用于对XML文件执行分析
  3. 允许下载第2步结果的一键
  4. 当我开始工作时,当为这三个步骤中的每个步骤使用单独的视图时,我试图在一个视图中包含所有三个步骤时无法完成它。有谁知道我做错了什么?

    到目前为止,这是我的代码。 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()
    

1 个答案:

答案 0 :(得分:1)

我认为你缺少的步骤是为表单分配一个动作。目前,HTML不知道如何处理表单?

http://www.w3schools.com/tags/att_form_action.asp