2015-02-23 45 views
0

我想弄清楚如何创建许多在一个页面上类似的表单。这个想法是让人们用文字评论页面的各个部分。这意味着,每个部分 都有其意见。表单与注释字段和提交按钮相同。 这是我到目前为止的代码。然而,它不起作用,我绝对需要了解如何以简单的方式实现这一点。有人可以帮我弄清楚这一点。在同一页上创建多个表单

在模型:

db.define_table('manyforms', 
    Field('comment')) 

在控制器:

allforms=dict(form_id=new_form_id(),form=SQLFORM(db.manyforms)) 
for f in allforms: 
    if f['form'].accepts(request.vars,formname=f['form_id']): 
     response.flash = 'accepted' 
    else: 
     response.flash = 'refused' 
return dict(allforms=allforms) 

回答

0

首先,这是一个有益的参考:Multiple forms per page (web2py documentation)

而且,在你的函数,你是通过迭代两种不同类型的词典。您试图将每个对象(其中一个可能是一个整数,另一个是表单)当作通过字符串键(如字典)索引的某个对象。

最后,从你的文章中不清楚你想要什么功能。你的功能是否对应一个视图?如果是这样,你真的想要一堆在你的视图中被一个变量{{= allforms}}访问的表单吗?也许从工程角度来看,更好的方法是首先创建一个函数来生成一个表单列表;也许是这样的:

def generate_forms(): 
    form_id_list = # create id list according to whatever criteria 
    forms = [SQLFORM(db.manyforms, _id = _id) for _id in form_id_list] 

    for form in forms: 
    if form.process(request.vars, formname = form['_id']).accepted: 
     response.flash = 'accepted' 
    else: 
     response.flash = 'refused' 

    return forms 
+0

感谢您的指针。它终于奏效了。我希望表单在不同的地方展示。每个表单只需要一个唯一的ID。您的代码有助于生成ID – user1469174 2015-03-07 11:27:13

相关问题