0

在过去一周左右的时间里,我一直在创建一个 Flask 应用程序,但似乎没有任何效果。目标是基于一组要在表单中提交的参数创建一个 Pandas 数据框。

在前端,一切似乎都运行良好,至少在主页上是这样。但是,每当我尝试 1) 实际创建基于参数的数据框时,似乎都会出现错误(这意味着使用my_function,以及 2)每当我尝试转到网页的 /downloads 部分时。

我拥有的所有代码都包含在下面,包括两个模板。该/downloads页面的主要目的只是打印一条消息,说明该函数(理想情况下是在主页"/"中创建的)在创建新 DataFrame 时完成了它的工作。

我已经尝试了很多东西,包括使用更基本的方法if request.methods=='POST",但似乎没有任何效果。任何帮助将不胜感激。谢谢!

from flask import Flask, render_template, Response, request, redirect, url_for
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import FileField, StringField, IntegerField, SubmitField
from wtforms.validators import DataRequired
from my_script import my_function

app = Flask(__name__)
bootstrap = Bootstrap(app)

### setting configuration for WTF extension
app.config['SECRET_KEY'] = 'my secret key'

class FileUploadForm(FlaskForm):
    file_uploaded = FileField('Upload a file here:', validators=[DataRequired()])
    int_param = IntegerField('Enter number:', default=12, validators=[DataRequired()])
    param1 = StringField('Enter param1:', validators=[DataRequired()])
    param2 = StringField('Enter param2:', validators)
    submit = SubmitField('Download File')

### main page: contains the fields we need
@app.route('/', methods=['GET', 'POST'])
def index():
    form = FileUploadForm()

    if form.validate_on_submit():
        my_function(form.file_uploaded.data, form.int_param.data, form.param1.data,
                       form.param2.data)
        return render_template('download.html')

    return render_template('index_sys.html', form=form)

@app.route('/downloads', methods=['GET', 'POST'])
def downloads():
    return render_template('download.html')

index_sys.html:

{% extends "base_sys.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Title{% endblock %}

{% block page_content %}
Fill out the fields below.
<br><br>
{{ wtf.quick_form(form, action='/downloads') }}

{% endblock %}

下载.html:

{% extends "base_sys.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Title{% endblock %}

{% block page_content %}
<h2>File downloaded successfully</h2>
{% endblock %}
4

1 回答 1

0

请参阅本教程:https ://www.tutorialspoint.com/flask/flask_file_uploading.htm

确保enctype = "multipart/form-data"已设置。

于 2019-12-29T20:42:40.830 回答