在 html Flask WTForm 中动态更改 SubmitField 的 label/value

dynamically change SubmitField's label/value in html Flask WTForm

我创建了一个 Flask WTForm。我将表格用于 Add/Edit/Delete 目的。我想根据目的

动态更改 SubmitField label/value

表格Class

class UserForm(Form):
    username = StringField('User Name',validators=[validators.required(), validators.Length(max=32)])
    password = PasswordField('Password',validators=[validators.required(), validators.Length(min=8, max=16)])
    confirm_password = PasswordField('Confirm Password',validators=[validators.required(), validators.EqualTo('password', message='Both password fields must be equal !')])
    name = StringField('Name',validators=[validators.required(), validators.Length(max=32)])
    submit = SubmitField('Submit')

HTML 模板

<title>User Form</title>
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message[1] }}</li>
{% endfor %}</ul>
{% endif %}
{% endwith %}
<table height="100%" width="100%" >
<tr><td align="center" valign="middle">
<form method="post" action="/process/{{ option }}">
<table>
{{form.csrf }}
<tr><td>{{ form.username.label }}</td></tr>
<tr><td>
{% if option == "new" %}
    {{ form.username() }}
{% else %}
    {{ form.username(readonly=true) }}
{% endif %}
</td></tr>
<tr><td>{{ form.password.label }}</td></tr>
<tr><td>{{ form.password }}</td></tr>
<tr><td>{{ form.confirm_password.label }}</td></tr>
<tr><td>{{ form.confirm_password }}</td></tr>
<tr><td>{{ form.name.label }}</td></tr>
<tr><td>{{ form.name }}</td></tr>
{% if option == "new" %}
    {{ form.submit() }}  **submit label with 'New'
{% else %}
    {{ form.submit() }} **submit label with 'Edit'
{% endif %}
</table>
</form>
</td>
</tr>
</table>

在您的视图中在运行时更新标签:

例如:

from wtforms import Label

def some_view():

    _form = UserForm()
    _form.submit.label = Label(_form.submit.id, 'New' if option == 'new' else 'Edit')

    return render_template('index.html', form=_form)