【问题标题】:append_entry() is not working after appending first time. I am using Fieldlist with flask-wtf, jinja & Python 3.4第一次附加后 append_entry() 不起作用。我正在将 Fieldlist 与 flask-wtf、jinja 和 Python 3.4 一起使用
【发布时间】:2018-11-26 11:06:17
【问题描述】:

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

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

没有显示错误。

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

在第二次尝试中未添加新行,但页面重新加载,并且在服务器日志中打印“数据为王”和“真”(这意味着循环已执行但 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('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()

查看.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 数据

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

【问题讨论】:

    标签: python flask append fieldlist


    【解决方案1】:

    您是否尝试过初始化表单并将其传递给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)
    

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 2016-03-07
      • 2013-11-21
      • 2014-10-17
      • 2015-06-22
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      相关资源
      最近更新 更多