python - 第一次附加后 append_entry() 不起作用。我正在将 Fieldlist 与 flask-wtf、jinja 和 Python 3.4 一起使用
问题描述
我在通过烧瓶-wtf 中的 append_entry 附加字段列表时遇到问题。
我可以从字段列表中添加一行字段,但添加第一行后,我无法添加第二行。
没有显示错误。
在第一次尝试中,添加了一个字段列表项的新行,并在服务器日志中打印“数据为王”和“真”(我已将其包括在内以查看添加按钮是否发送数据并循环实际通过)。
在第二次尝试中,未添加新行,但重新加载页面并在服务器日志中打印“数据为王”和“真”(这意味着循环已执行但 append_entry 命令不起作用)。
我发现 4 年前问过同样的问题,但是在该问题的已接受答案中给出的解决方案并不能解决问题。
下面是链接。
我已经尝试了所有组合,但没有解决问题(我已经解决了这个问题超过 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>
解决方案
您是否尝试过初始化表单并将其传递给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)
推荐阅读
- node.js - 如何在node js中配置redis客户端
- javascript - 昨天对象 HTMLSpanElement 我的代码运行良好,但现在我的银值显示了这一点
- php - 如何使用 preg_match 匹配脚本?
- php - Laravel 路由没有像他们应该的那样工作
- python - 引发异常 xml.sax._exceptions.SAXParseException:
:1:0: 格式不正确(无效令牌) - hdfs - 如何优雅地停止水槽代理
- javascript - 有没有办法我可以在javascript中将变量视为数学
- pyspark - Pyspark根据另一列的模式替换列中的字符串
- java - 搜索过滤器总是返回列表视图项的 0 位置
- windows - Windows 命令提示符