我是新手,想要渲染表格。我遇到了相同的代码但无法呈现它,因为我不知道如何以及如何运行
from collections import namedtuple
from wtforms import Form, FieldList, BooleanField, HiddenField, FormField
from webob.multidict import MultiDict
GroceryItem = namedtuple('GroceryItem', ['item_id', 'want', 'name'])
class GroceryItemForm(Form):
item_id = HiddenField()
want = BooleanField()
class GroceryListForm(Form):
def __init__(self, *args, **kwargs):
super(GroceryListForm, self).__init__(*args, **kwargs)
# just a little trickery to get custom labels
# on the list's checkboxes
for item_form in self.items:
for item in kwargs['data']['items']:
if item.item_id == item_form.item_id.data:
item_form.want.label =''
item_form.label = item.name
items = FieldList(FormField(GroceryItemForm))
item1 = GroceryItem(1, True, 'carrots')
item2 = GroceryItem(2, False, 'cornmeal')
data = {'items': [item1, item2]}
form = GroceryListForm(data=MultiDict(data))
print form.items()
我希望呈现一个表单,其中用户选择一个选项并将其提交给数据库。
答案 0 :(得分:3)
Flask是一个MVC,因此需要一个模型,一个视图和一个控制器。您创建的只是表单的模型和一些控制器代码来创建购物清单。但是,只是打印表单项不会呈现任何内容。您需要创建一个使用Jinja2或任何其他模板语言
呈现表单的视图由于您使用的是FlaskWTForms,您可以在此处查看其文档: https://flask-wtf.readthedocs.org/en/latest/index.html
如果您是Flask的新手,您还可以查看Miguel Grinberg的优秀教程: http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-forms