Python 在不同的文件中呈现两个表单,但只能获取第一个表单
我试图通过选择相应的列将csv文件上载到Mysql中,但问题是一旦我更改了路径,文件就会关闭。 因此,我尝试以相同的方式呈现两个模板:第一个加载文件,第二个选择列。我只能访问第一个模板。 我正在用env.is_submitted()测试第二个表单,但即使我不提交,它也会打印“submitted” upload.htmlPython 在不同的文件中呈现两个表单,但只能获取第一个表单,python,flask,wtforms,Python,Flask,Wtforms,我试图通过选择相应的列将csv文件上载到Mysql中,但问题是一旦我更改了路径,文件就会关闭。 因此,我尝试以相同的方式呈现两个模板:第一个加载文件,第二个选择列。我只能访问第一个模板。 我正在用env.is_submitted()测试第二个表单,但即使我不提交,它也会打印“submitted” upload.html <html> <head> <title>Upload</title> </head&
<html>
<head>
<title>Upload</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" >
{{ form.hidden_tag() }}
{{ form.csv }}
<input type="submit">
</form></body>
</html>
上传
{{form.hidden_tag()}}
{{form.csv}
form.html
{% block body %}
<form name = "mapping" method="POST" enctype="multipart/form-data" >
{{ env.hidden_tag() }}
<table>
{% for csv in columnscsv %}
<tr> <td> {{ csv }}</td>
<td><select name = "{{ csv }}" >
<option >year </option>
<option >month</option>
<option >day</option>
<option>reference</option>
<option>designation</option>
</select></td>
</tr>
{% endfor %}
</table>
<input type="submit" value="Submit" name = "submit" >
</form>
{% endblock %}
{%block body%}
{{env.hidden_tag()}}
{列SCSV%中的csv为%s}
{{csv}}
年
月
白天
参考
任命
{%endfor%}
{%endblock%}
您的form.html只能在您提交表单时呈现(您的呈现(salessource)
在提交表单的检查范围内),因此我无法找到它是否以这种方式打印“已提交”
如果要渲染2个模板,我会在周围找到这样的作品:
- 添加
作为临时文件,以了解是否提交了文件会话['fileName']=fileName
- 提交后重定向回自身
- 检查
是否存在,以选择要呈现的模板会话['fileName']
@app.route('/upload', methods=['GET', 'POST']) def upload(): form = UploadForm() global columnscsv, salessource if form.validate_on_submit(): try: filename = secure_filename(form.csv.data.filename) file = form.csv.data session['fileName'] = filename if file and allowed_file(filename): print 'file_path' salessource = CSVSource(file, delimiter=',') columnscsv = salessource.fieldnames print columnscsv redirect(url_for('upload')) except: raise if session.get('fileName') != None: render_template('form.html',columnscsv = columnscsv ,env=env) else: return render_template('upload.html', form=form)
@app.route('/upload', methods=['GET', 'POST'])
def upload():
form = UploadForm()
global columnscsv, salessource
if form.validate_on_submit():
try:
filename = secure_filename(form.csv.data.filename)
file = form.csv.data
session['fileName'] = filename
if file and allowed_file(filename):
print 'file_path'
salessource = CSVSource(file, delimiter=',')
columnscsv = salessource.fieldnames
print columnscsv
redirect(url_for('upload'))
except:
raise
if session.get('fileName') != None:
render_template('form.html',columnscsv = columnscsv ,env=env)
else:
return render_template('upload.html', form=form)