此模板清除所有其他窗体

2024-05-18 14:49:27 发布

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

我有多个表单,每个表单都有一个提交按钮,都在一个模板中。render_template只返回空的StringFields。如何在不接触其他StringFields的情况下进行渲染?你知道吗

@app.route('/', methods=['GET','POST'])
def index():
    msform = msForm(request.form)
    synform = synForm(request.form)    

    if request.method == 'POST' and msform.validate() and msform.ms_submit.data:
        processed_text = model.most_similar(positive=[msform.ms_3.data, msform.ms_2.data], negative=[msform.ms_1.data])
        msform.ms_submit.label.text = processed_text[0][0]        
        return render_template('my-form.html', msform=msform, synform=synform)        

    elif request.method == 'POST' and synform.validate() and synform.syn_submit:
        processed_text = model.most_similar([synform.syn_1.data])    
        return render_template('my-form.html', msform=msform, synform=synform)

    return render_template('my-form.html', msform=msform, synform=synform)

class msForm(Form):
    ms_1 = StringField(label='Eingabe_1', default = 'king', validators=[validators.DataRequired(message='This Field is required')])
    ms_2 = StringField(label='Eingabe_2', default = 'man', validators=[validators.DataRequired(message='This Field is required')])
    ms_3 = StringField(label='Eingabe_3', default = 'queen', validators=[validators.DataRequired(message='This Field is required')])
    ms_submit = InlineSubmitField(label = '?')

class synForm(Form):
    syn_1 = StringField(label='Eingabe', default = 'king', validators=[validators.DataRequired()])
    syn_submit = InlineSubmitField('?')

Tags: andtextformdatarequesttemplaterenderlabel
1条回答
网友
1楼 · 发布于 2024-05-18 14:49:27

我假设您的HTML页面上有两个独立的<form>,为简洁起见,如下所示:

<form>{{ msform }}</form>
<form>{{ synform }}</form>

我相信你是这么说的:在填写和提交一个表单时,另一个表单的值就丢失了。对吗?你知道吗

如果是这样,这就是预期的行为,不是来自Flask,而是来自浏览器。提交HTML <form>时,只有来自该表单标记的数据被发送到服务器。因此,其他<form>标记中的任何数据都将丢失。你知道吗

要提交所有表单,请在相同的<form>标记中呈现所有表单。为每个表单指定一个前缀,以确保输入名称不会发生冲突。你知道吗

msform = msForm(request.form, prefix='ms')
<form method="post">
    {{ msform }}
    {{ synform }}
</form>

相关问题 更多 >

    热门问题