我有一个表单,以及动态添加字段的数量,
class EditBook(Form):
title = TextField('title', validators = [Required()])
authors = FieldList(TextField())
这是我追加他们的方式
$('form').append('<input type="text" class="span4" id="authors-' + FieldCount +'" name="authors-' + FieldCount +'" placeholder="author ' + FieldCount +'">');
我想从theese输入中获取数据。如何使用python迭代它们?
(或者如何将带有jquery的收集数据发送到服务器?我是js和jquery的新手)
猜测我的输入与作者Fieldlist没有关联。
更新
我的输入没有与EditBook连接,虽然我将它们附加到它。
当我将输入附加到表单时,form.data将解决其余问题。 (现在我得到了keyerror,试图访问form.data ['authors-1'])
现在我尝试添加一个作者字段以便稍后复制它。 但由于未知原因,它会变得无形。 应输入空格,类似于“作者-1”
{{form.authors(class="span4", placeholder="author 1")}}
我应该在代码中添加什么才能正确呈现此字段?
答案 0 :(得分:0)
WTForms process_formdata
方法会将这些内容从表单提交中提取出来并存储在data
属性中。以下是您的访问代码的外观。您的authors
列表应存储在可使用authors
密钥访问的可迭代中。
from collections import namedtuple
from wtforms.validators import Required
from wtforms import Form
from wtforms import TextField
from wtforms import FieldList
from webob.multidict import MultiDict
class EditBook(Form):
title = TextField('title', validators = [Required()])
authors = FieldList(TextField())
Book = namedtuple('Book', ['title', 'authors'])
b1 = Book('Title1', ['author1', 'author2'])
# drop them in a dictionary
data_in={'title':b1.title, 'authors':b1.authors}
# Build form and print
form = EditBook(data=MultiDict(data_in))
# lets get some data
print form.data
print form.data['title']
print form.data['authors']