更新 wtforms 中提交按钮的文本
Update text of submit button in wtforms
我有一个表单,将用于新的提交和更新。我的问题是关于提交按钮的文本。我想根据情况将文本更改为 New submit 和 New update。这纯粹是提供信息。
class Interview(Form):
...
submit = SubmitField('New submit')
如果可能,我想避免创建一个新的 class,具有完全相同的字段,只是因为提交的文本。
我通过不在表单定义中加入提交按钮解决了这个问题,而是根据我想要的标签在 HTML 中添加了一个提交按钮。
{% if pagetitle == 'Update' %}
<p><input type="submit" name="btn" value="New Update"></p>
{% endif %}
{% if pagetitle == 'Submit' %}
<p><input type="submit" name="btn" value="New Submit"></p>
{% endif %}
通过这种方式,您可以使用相同的表单,并在按钮上使用不同的标签,具体取决于应使用的标签。
如果你需要你可以使用相同的变量来设置表单的动作,如果你需要指向不同的视图。
或者您可以在视图中使用按钮的值。
if flask.request.form['btn'] == 'New Update':
...
elif flask.request.form['btn'] == 'New Submit':
...
使用 mixin 的正确方法:
class InterviewMixin():
...
class InterviewSubmit(Form, InterviewMixin):
submit = SubmitField('New submit')
class InterviewUpdate(Form, InterviewMixin):
submit = SubmitField('New update')
正确的方法是创建两个表单并检查在服务器端按下了哪个提交按钮。
if submit_form.validate_on_submit() and submit_form.any_field.data:
print "submit_form submit button is Pressed"
elif update_form.validate_on_submit() and update_form.any_field.data:
print "update_form submit button is submitted"
老问题,但对于遇到此问题的其他人,另一种方法是在呈现模板之前从代码中设置它:
if is_submit:
form.submit.label.text = 'New submit'
else:
form.submit.label.text = 'New update'
return render_template(...)
我有一个表单,将用于新的提交和更新。我的问题是关于提交按钮的文本。我想根据情况将文本更改为 New submit 和 New update。这纯粹是提供信息。
class Interview(Form):
...
submit = SubmitField('New submit')
如果可能,我想避免创建一个新的 class,具有完全相同的字段,只是因为提交的文本。
我通过不在表单定义中加入提交按钮解决了这个问题,而是根据我想要的标签在 HTML 中添加了一个提交按钮。
{% if pagetitle == 'Update' %}
<p><input type="submit" name="btn" value="New Update"></p>
{% endif %}
{% if pagetitle == 'Submit' %}
<p><input type="submit" name="btn" value="New Submit"></p>
{% endif %}
通过这种方式,您可以使用相同的表单,并在按钮上使用不同的标签,具体取决于应使用的标签。
如果你需要你可以使用相同的变量来设置表单的动作,如果你需要指向不同的视图。
或者您可以在视图中使用按钮的值。
if flask.request.form['btn'] == 'New Update':
...
elif flask.request.form['btn'] == 'New Submit':
...
使用 mixin 的正确方法:
class InterviewMixin():
...
class InterviewSubmit(Form, InterviewMixin):
submit = SubmitField('New submit')
class InterviewUpdate(Form, InterviewMixin):
submit = SubmitField('New update')
正确的方法是创建两个表单并检查在服务器端按下了哪个提交按钮。
if submit_form.validate_on_submit() and submit_form.any_field.data:
print "submit_form submit button is Pressed"
elif update_form.validate_on_submit() and update_form.any_field.data:
print "update_form submit button is submitted"
老问题,但对于遇到此问题的其他人,另一种方法是在呈现模板之前从代码中设置它:
if is_submit:
form.submit.label.text = 'New submit'
else:
form.submit.label.text = 'New update'
return render_template(...)