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

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

问题描述

在flask-wtf 中通过append_entry 附加fieldlist 时遇到问题.

我可以从字段列表中添加一行字段,但添加第一行后,我无法添加第二行.

未显示任何错误.

第一次尝试添加字段列表项的新行,并在服务器日志中打印数据为王"和真"(我已包含此内容以查看添加按钮是否发送数据和循环是否实际通过).

在第二次尝试中,未添加新行但页面重新加载,并在服务器日志中打印数据为王"和真"(这意味着执行循环但 append_entry 命令不起作用).

我发现 4 年前问过同样的问题,但该问题已接受的答案中给出的解决方案并不能解决问题.

下面是链接.

https://stackoverflow.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('开始时间',validators=[DataRequired()])类 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("添加")remove_item_cont = SubmitField("删除")提交 = SubmitField()

view.py 数据

@additem.route('/additem/', methods = ['GET','POST'])def additemcont():form = AddItemCont(request.form)如果 form.add_item_cont.data:form.item_cont.append_entry()打印(数据为王")打印(form.add_item_cont.data)return render_template('entry.html',form=form)

entry.html 数据

{{ form.hidden_​​tag() }}<div类=行"><div class="col-md-1" ><form action="" method="POST" class="form-horizo​​ntal"><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></表单>

<div class = "row"><div class="col-md-12" >{% for x in form.item_cont %}{% for i in x %}{{ i (class="form-control") }}{% 结束为 %}{% 结束为 %}</div></div>

解决方案

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

@additem.route('/additem/', methods = ['GET','POST'])def additemcont():form = AddItemCont(request.form)如果 form.add_item_cont.data:### 这里form_cont = FormCont()form.item_cont.append_entry(form_cont)####打印(数据为王")打印(form.add_item_cont.data)return render_template('entry.html',form=form)

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.

No errors are shown.

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).

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).

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

Below is the link.

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

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

Can someone help please.

form.py Data

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 data

@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>

解决方案

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; 一起使用蟒蛇 3.4的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
Python最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆