获取数据迭代wtform字段

时间:2014-05-30 19:58:41

标签: jquery python wtforms flask-wtforms

我有一个表单,以及动态添加字段的数量,

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")}}

我应该在代码中添加什么才能正确呈现此字段?

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