Flask 提交按钮在烧瓶窗体上不起作用

Flask 提交按钮在烧瓶窗体上不起作用,flask,sqlalchemy,flask-wtforms,Flask,Sqlalchemy,Flask Wtforms,我使用了一个相同的表单提交,它在过去一直有效。submit按钮现在不起作用,因此POST和validate循环中的所有内容都没有被执行 这是一个单页webapp。此表单应包含7个字段并写入数据库。应用程序正确打印数据库中的记录(最近的_数据),因此与数据库的连接是正确的 预期行为:这将产生一个获取后重定向。“提交”按钮应该触发一个帖子,它应该重定向到主页,表单现在为空 当前行为:提交按钮不起任何作用 复制:我想这可以通过添加到我的代码中的普通样板烧瓶应用程序代码来复制 调试:没有显示错误 cla

我使用了一个相同的表单提交,它在过去一直有效。submit按钮现在不起作用,因此POST和validate循环中的所有内容都没有被执行

这是一个单页webapp。此表单应包含7个字段并写入数据库。应用程序正确打印数据库中的记录(最近的_数据),因此与数据库的连接是正确的

预期行为:这将产生一个获取后重定向。“提交”按钮应该触发一个帖子,它应该重定向到主页,表单现在为空

当前行为:提交按钮不起任何作用

复制:我想这可以通过添加到我的代码中的普通样板烧瓶应用程序代码来复制

调试:没有显示错误

class ApplicationForm(FlaskForm):
    emp_length_cat = IntegerField(
        u'How long have you been with your employer? (1-11)',
        validators=[DataRequired()])
    home_status = IntegerField(
        u'What is your housing status? (1-Rent, 2-Other, 3-Mortgage, 4-Own)',
        validators=[DataRequired()])
    zip3 = IntegerField(
        u'What is the first 3 digits of your zip code?',
        validators=[DataRequired()])
    total_acc = IntegerField(
        u'How many accounts have you ever had in your name?',
        validators=[DataRequired()])
    annual_inc = IntegerField(
        u'What is your annual income? (no commas)',
        validators=[DataRequired()])
    dti = IntegerField(
        u'What is your debt-to-income ratio? (round to 2 decimals)',
        validators=[DataRequired()])
    descr = StringField(
        u'Why do you need this loan? (enter text)',
        validators=[DataRequired()])
    submit = SubmitField('Submit')


@app.route('/', methods=['GET', 'POST'])
def index():
    # Set form
    form = ApplicationForm(request.form)
    data = []
    # Display db connection
    with db.connect() as conn:
        recent_data = conn.execute(
            "SELECT * FROM loans_tbl " "ORDER BY id DESC LIMIT 5"
        ).fetchall()
        for row in recent_data:
            data.append({"id": row[0], "target": row[1], "emp_length_cat": row[2],
                         "home_status": row[3], "zip3": row[4], "total_acc": row[5],
                         "annual_inc": row[6], "dti": row[7], "descr": row[8],
                         "scores": row[9], "predict": row[10]})
    if request.method == 'POST' and form.validate_on_submit():
        emp_length_cat = form.emp_length_cat.data
        home_status = form.home_status.data
        zip3 = form.zip3.data
        total_acc = form.total_acc.data
        annual_inc = form.annual_inc.data
        dti = form.dti.data
        descr = form.descr.data
        with db.connect() as conn:
            conn.execute(
                """INSERT INTO
                    loans_tbl (
                        emp_length_cat,
                        home_status,
                        zip3,
                        total_acc
                        annual_inc,
                        dti,
                        descr)
                VALUES (%s,%s,%s,%s,%s,%s,%s)""",
                (emp_length_cat, home_status, zip3, total_acc, annual_inc, dti, descr)
            )
        db.session.commit()
        flash('Thanks for applying')
        return redirect(url_for('index'))
    return render_template('index.html',
                           form=form,
                           recent_data=data)

从这里开始申请:
{{form.hidden_tag()}}
{{form.emp_length_cat.label}{{form.emp_length_cat(id='emp_length_cat')}
{{form.home\u status.label}{{form.home\u status(id='home\u status')}
{{form.zip3.label}{{form.zip3(id='zip3')}
{{form.total_acc.label}{{form.total_acc(id='total_acc')}
{{form.annual_inc.label}{{{form.annual_inc(id='annual_inc')}}
{{form.dti.label}{{form.dti(id='dti')}
{{form.descr.label}{{form.descr(id='descr')}
{{form.submit()}}   {{form.errors}} db中的最后五笔贷款(第三和第五笔已正确预测违约) {最近_data%}中的数据为%
  • 默认标志(1表示默认值){{data.target},
    emp_length_cat{{data.emp_length_cat},
    主页状态代码{{data.home\u status},
    zip{{data.zip3}的前3个,
    中的帐户总数 借款人名称{{data.total{u acc},
    年度公司{{data.annual{u inc},
    债务与收入之比{data.dti}

    描述字段{data.descr},

    nlp分数{{data.scores},
    模型预测{data.predict}
  • {%endfor%}
    我在HTML中看到您有:

    
    
    但是在Python代码中,对于
    /index

    @app.route('/',方法=['GET','POST'])
    

    如果您将
    表单
    标签更改为POST to
    /
    ,是否有效?

    谢谢您的回复。我试过了,但没有成功。
    <div class="container">
        <div class="row">
            <div class="col">
                <h4>Begin application here:</h4>
                <form method="POST" action="/index">
                    {{ form.hidden_tag() }}
                    {{ form.emp_length_cat.label }} {{ form.emp_length_cat(id='emp_length_cat') }} </br>
                    {{ form.home_status.label }} {{ form.home_status(id='home_status') }} </br>
                    {{ form.zip3.label }} {{ form.zip3(id='zip3') }} </br>
                    {{ form.total_acc.label }} {{ form.total_acc(id='total_acc') }} </br>
                    {{ form.annual_inc.label }} {{ form.annual_inc(id='annual_inc') }} </br>
                    {{ form.dti.label }} {{ form.dti(id='dti') }} </br>
                    {{ form.descr.label }} {{ form.descr(id='descr') }} </br>
                    {{ form.submit() }}
                </form> 
            </div>
            <div class="form_errors">
               {{ form.errors }}
           </div>
        </div>
        <div class="row">
            <div class="col">
                <h4>Last five loans in the db (3rd and 5th have default correctly predicted)</h4>
                {% for data in recent_data %}
                <li>
                    Default flag (1 for default) {{data.target}},</br> emp_length_cat {{data.emp_length_cat}},</br> 
                    home_status code {{data.home_status}},</br> first 3 of zip {{data.zip3}},</br> total accounts in
                    borrower's name {{data.total_acc}},</br> annual_inc {{data.annual_inc}},</br> debt to income {{data.dti}}, </br></br>
                    description field <i>{{data.descr}}</i>, </br></br> nlp score {{data.scores}},</br> prediction from model {{data.predict}}
                </li>
                {% endfor %}
            </div>
        </div>
    </div>