Обновить текст кнопки отправить в wtforms
У меня есть форма, которая будет использоваться для новой отправки и обновления. Мой вопрос касается текста кнопки "Отправить". Я хочу изменить текст на New submit и на New update, в зависимости от ситуации. Это чисто информативно.
class Interview(Form):
...
submit = SubmitField('New submit')
Если возможно, я хочу избежать создания нового класса, с точно такими же полями, только из-за текста submit.
4 ответа:
Правильный способ сделать это с миксинами:
class InterviewMixin(): ... class InterviewSubmit(Form, InterviewMixin): submit = SubmitField('New submit') class InterviewUpdate(Form, InterviewMixin): submit = SubmitField('New update')
Я решил эту проблему, не включив кнопку submit в определение формы, вместо этого я добавляю кнопку submit в 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': ...
Правильным способом было бы сделать две формы и проверить, какая кнопка отправки нажата на стороне сервера.
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"