我正在使用python 2.7和flask(我的第一个)构建一个小的Web应用程序。
我正在尝试在一个烧瓶视图中包含三个 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_TestPAMPAM_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()
我认为您缺少的步骤是为表单分配操作。目前,HTML不知道如何处理表单?
http://www.w3schools.com/tags/att_form_action.asp