2015-02-23 31 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

相關問題