第一次添加后,append_entry()不起作用。我将Fieldlist与flask-wtf,jinja& Python 3.4 [英] append_entry() is not working after appending first time. I am using Fieldlist with flask-wtf, jinja & Python 3.4

查看:280
本文介绍了第一次添加后,append_entry()不起作用。我将Fieldlist与flask-wtf,jinja& Python 3.4的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在通过flask-wtf中的append_entry追加字段列表时遇到问题。

I am facing issue while appending fieldlist through append_entry in flask-wtf.

我能够从字段列表中添加一行字段,但是在添加第一行之后,我无法添加第二行。

I am able to add one row of fields from fieldlist but after adding first row, i am not able to add second row.

不显示错误。

第一次尝试创建新行是添加了字段列表项,并在服务器日志中添加了数据为王和真实的打印信息(我已经包括了此信息,以查看添加按钮是否发送数据并且循环实际上通过了。)

In first attempt a new row is added of field list items and in server log "Data is King" and "True" is printed (I have included this to see if add button sends data and loop actually goes through).

在第二个attemt中,未添加新行,但重新加载了页面,并在服务器日志中显示了 Data is King和 True(这表示执行了循环,但是append_entry命令无效)。

In second attemt new row is not added but page reloads and in server log "Data is King" and "True" is printed (This means loop is executed but append_entry command does not work).

我在4年前发现了一个相同的问题,但是该问题的公认答案给出的解决方案不能解决问题。

I found same question asked 4 years ago, but solution given in that question's accepted answer does not solve the problem.

下面是链接。

https ://stackoverflow.com/questions/8637831/cant-append-entry-fieldlist-in-flask-wtf-more-than-one# =

我已经尝试了所有组合,但没有任何方法可以解决问题(现在已经解决了48小时以上)。

I have tried all the combinations but nothing solves the problem (am upto this problem for more than 48hrs now).

有人可以帮忙吗?

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数据

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>


推荐答案

您是否尝试过初始化表单并将其传递给 append_entry

Have you tried initializing the form and passing it to 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)

这篇关于第一次添加后,append_entry()不起作用。我将Fieldlist与flask-wtf,jinja&amp; Python 3.4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆