Flask Значение WTForms HiddenInput не отправляется в приложение - PullRequest
0 голосов
/ 20 июня 2020

Итак, это мой первый вопрос о переполнении стека. Пожалуйста, будьте язычниками ..

Я пытаюсь использовать IntegerField в качестве HiddenInput, но когда я отправляю форму, значение поля не отправляется в мое приложение. (Когда я отлаживаю, значение равно ''), но я вижу, что правильное значение устанавливается на самой странице с помощью инструментов разработчика.

Если я удалю widget = HiddenInput (), он будет работать без проблем . Я уверен, что есть какая-то смехотворно очевидная причина, но мне не удалось ее найти.

Класс:

class RemoveTimeslot(FlaskForm):
    ts_id = IntegerField(widget=HiddenInput())
    remove = SubmitField('Remove')

С точки зрения:

slot = Timeslot.query.filter_by(id=rem_form.ts_id.data).first()
    if slot:
        db.session.delete(slot)
        db.session.commit()
        flash('Timeslot Removed!')
        return redirect(url_for('admin.timeslots'))
    else:
        flash('Failed to remove timeslot!', 'warning')

Из шаблона: '' '

{% for slot in slots %}
<tr>
    <td>{{slot.start.isoformat(timespec='minutes')}}</td>
    <td>{{slot.end.isoformat(timespec='minutes')}}</td>
    <td>{{slot.duration}} Minutes</td>
    <td>
        <form method="POST" action="">
            {{ rem_form.hidden_tag() }}
            {{ rem_form.remove(class="btn btn-dark") }}
            {{ rem_form.ts_id(value=slot.id) }}
        </form>
    </td>
</tr>
{% endfor %}

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 21 июня 2020

Наконец-то я смог заставить его работать, добавив type="hidden" в шаблон. В самом классе я оставил его как ts_id = IntegerField(), но когда я создал поле в шаблоне, я изменил его на {{ rem_form.ts_id(value=slot.id, type="hidden") }}, и это сработало! Я не знаю, почему один работает иначе, чем другой ... дайте мне знать, если у вас есть идеи!

...