python flask wtf表单从函数返回值

2024-06-28 16:00:08 发布

您现在位置:Python中文网/ 问答频道 /正文

试图从函数中检索int,该函数从Flask中wtform中的表单获取数据

form.py

    class CoilsSlittingMetric(FlaskForm):
    masterCoil = IntegerField('Master Coil Size [mm]', validators=[DataRequired()])
    slitOne = IntegerField('First Coil Size [mm]', validators=[DataRequired()])
    slitTwo = IntegerField('Second Coil Size [mm]', validators=[DataRequired()])
    slitThree = IntegerField('Third Coil Size [mm]', validators=[DataRequired()])
    slitFour = IntegerField('Fourth Coil Size [mm]', validators=[DataRequired()])
    remember = BooleanField('Remember my current entries?')
    submit = SubmitField('Calculate!')

当我运行routes.py而不使用returna语句时,它会很好地显示flash消息 但是当我尝试返回(myproblem)整数时,它返回以下错误

TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple,

下面是函数

@app.route('/slitter', methods=['GET', 'POST'])
@login_required
def slitter():

    form = CoilsSlittingMetric()
    if form.validate_on_submit():
        myproblem = form.masterCoil.data
        flash(myproblem)
        flash(f'Calculating  {form.masterCoil.data} '
              f'and resulting data {form.slitOne.data}, {form.slitTwo.data}, '
              f'{form.slitThree.data}, {form.slitFour.data}')
        return myproblem
        return redirect(url_for('slitter_results'))
    return render_template('slitter.html', title="Slitter Calculator - Metric Sizes", form=form)

我有点理解错误消息中的内容,但我需要使用每个值的整数(仅使用其中一个值进行测试以简化),但我不知道如何操作

我试图在这里寻找类似的问题,但只找到了一个对我不起作用的解决方案

编辑: 稍后我尝试在另一个函数中使用此值

@app.route('/slitter_results', methods=['GET', 'POST'])
@login_required

    myproblem = slitter()
    flash(myproblem)

Tags: 函数pyformdatasizereturncoilflash
1条回答
网友
1楼 · 发布于 2024-06-28 16:00:08

我想你正在寻找这样的东西:

首先,从提交的表单中获取值,然后在slitter_results函数中传递该值

@app.route('/slitter', methods=['GET', 'POST'])
@login_required
def slitter():

    form = CoilsSlittingMetric()
    if form.validate_on_submit():
        myproblem = form.masterCoil.data
        flash(f'Calculating  {form.masterCoil.data} '
              f'and resulting data {form.slitOne.data}, {form.slitTwo.data}, '
              f'{form.slitThree.data}, {form.slitFour.data}')
        return redirect(url_for('slitter_results', param_int=myproblem))
    return render_template('slitter.html', title="Slitter Calculator - Metric Sizes", form=form)

slitter_results函数将如下所示:

@app.route('/slitter_results/<int: param_int>', methods=['GET', 'POST'])
@login_required
def slitter_results(param_int)
    myproblem = param_int
    flash(myproblem)
    return "Yay" #just so you don't get an error, you can render or redirect to anywhere from here!

有关更多信息,请查看Variable RulesURL Building

相关问题 更多 >