Python 在不同的文件中呈现两个表单,但只能获取第一个表单

Python 在不同的文件中呈现两个表单,但只能获取第一个表单,python,flask,wtforms,Python,Flask,Wtforms,我试图通过选择相应的列将csv文件上载到Mysql中,但问题是一旦我更改了路径,文件就会关闭。 因此,我尝试以相同的方式呈现两个模板:第一个加载文件,第二个选择列。我只能访问第一个模板。 我正在用env.is_submitted()测试第二个表单,但即使我不提交,它也会打印“submitted” upload.html <html> <head> <title>Upload</title> </head&

我试图通过选择相应的列将csv文件上载到Mysql中,但问题是一旦我更改了路径,文件就会关闭。 因此,我尝试以相同的方式呈现两个模板:第一个加载文件,第二个选择列。我只能访问第一个模板。 我正在用env.is_submitted()测试第二个表单,但即使我不提交,它也会打印“submitted”

upload.html

    <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)
    

谢谢,但我仍然不明白如何访问表单中的表单。htmlc您可以了解有关“访问”的更多详细信息吗?我是说,当我将模板渲染到“form.hml”时,我无法访问表单中的标记。我找到了另一个解决方案:我在本地上传文件并重用它。非常感谢。
@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)