append_entry() не работает после добавления в первый раз. Я использую Fieldlist с flask-wtf, jinja & Python 3.4
Я столкнулся с проблемой при добавлении списка полей через append_entry в flask-wtf.
Я могу добавить одну строку полей из списка полей, но после добавления первой строки я не могу добавить вторую строку.
Ошибки не отображаются.
При первой попытке добавляется новая строка элементов списка полей, и в журнале сервера выводятся данные "Король" и "Истина" (я включил это, чтобы увидеть, отправляет ли кнопка "Добавить" данные и цикл фактически проходит).
Во втором случае новая строка не добавляется, но страница перезагружается, и в журнале сервера выводятся "Data is King" и "True" (это означает, что цикл выполнен, но команда append_entry не работает).
Я нашел тот же вопрос, заданный 4 года назад, но решение, данное в принятом ответе на этот вопрос, не решает проблему.
Ниже ссылка.
https://stackru.com/questions/8637831/cant-append-entry-fieldlist-in-flask-wtf-more-than-one#=
Я перепробовал все комбинации, но ничто не решает проблему (я занимаюсь этой проблемой уже более 48 часов).
Может кто-нибудь помочь, пожалуйста.
Данные form.py
class FormCont(FlaskForm):
description = StringField('Description',validators=[DataRequired()])
start_time = FloatField('Start Time',validators=[DataRequired()])
class AddItemCont(FlaskForm):
a = FloatField(validators=[DataRequired()])
b = FloatField(validators=[DataRequired()])
c = FloatField(validators=[DataRequired()])
item_cont = FieldList(FormField(FormCont), min_entries=0, max_entries=100)
add_item_cont = SubmitField("Add")
remove_item_cont = SubmitField("Remove")
submit = SubmitField()
данные view.py
@additem.route('/additem/', methods = ['GET','POST'])
def additemcont():
form = AddItemCont(request.form)
if form.add_item_cont.data:
form.item_cont.append_entry()
print ("Data is King")
print (form.add_item_cont.data)
return render_template('entry.html',form=form)
entry.html data
<form action="{{url_for('additemcont')}}" method='POST' name='AddItemCont' class="form-horizontal">
{{ form.hidden_tag() }}
<div class = "row">
<div class="col-md-1" >
<form action="" method="POST" class="form-horizontal"><button type="submit" class="btn btn-success btn-xs" name="add_item_cont" value="add_item_cont"><span class="glyphicon glyphicon-plus" aria-hidden="true"></button>
</form>
</div>
</div>
<div class = "row"><div class="col-md-12" >
{% for x in form.item_cont %}
{% for i in x %}
{{ i (class="form-control") }}
{% endfor %}
{% endfor %}
</div></div>
0 ответов
Вы пробовали инициализировать форму и передать ее в append_entry
?
@additem.route('/additem/', methods = ['GET','POST'])
def additemcont():
form = AddItemCont(request.form)
if form.add_item_cont.data:
### here
form_cont = FormCont()
form.item_cont.append_entry(form_cont)
####
print ("Data is King")
print (form.add_item_cont.data)
return render_template('entry.html',form=form)