2013-07-25 100 views
2

我想創建一個HTML表來顯示一個mongodb集合的內容。該集合包含有關來自小企業的不同客戶訂單的數據。某些數據將始終存在於給定的文檔中,例如客戶名稱和電話號碼。但是,每個文件中的一些數據片段需要變化,例如訂購的物品,因爲一個客戶可能訂購1件物品,而另一個可能訂購3件物品。因此,如果我在每個文檔中都有一個包含任意數字字段的文檔的MongoDB集合,我如何動態地將它們添加到HTML表格中以顯示文檔的內容?作爲我正在尋找的顯示器類型的示例,這裏是我知道的字段的硬編碼HTML將保持不變。用HTML顯示MongoDB文檔

<!DOCTYPE html> 
<html> 
    <head> 
    <head> 
    <title>Invoice Report</title> 
    <style type="text/css"> 
    body {font-family:sans-serif;color:#4f494f;} 
    form input {border-radius: 7.5px;} 
    h5 {display: inline;} 
    .label {text-align: right} 
    .ordersBook {float:left; padding-top: 10px;} 
    .name {width:100%;float:left; padding:3px;} 
    .wrapper { padding-left: 25px; padding-top: 20px} 
    </style> 
    <script type="text/javascript"> 
    var itemRe = /item*/; 
    } 
    </script> 
    </head> 
    </head> 
    <body> 
    <div class="invoice"> 

     <h4>Order Form:</h4> 
<table border="1"> 
<tr> 
    <th>Name:</th> 
    <td>{{rows['name']}}</td> 
</tr> 
<tr> 
    <th>Created:</th> 
    <td>{{rows['created']}}</td> 
</tr> 
<tr> 
    <th>Phone:</th> 
    <td>{{rows['phone']}}</td> 
</tr> 
<tr> 
    <th>Email:</th> 
    <td>{{rows['email']}}</td> 
</tr> 
<tr> 
    <th>Item:</th> 
    <td>{{rows['item']}}</td> 
    </tr> 
</div> 
    <tr> 
    <th>Quantity:</th> 
    <td>{{rows['qty']}}</td> 
    </tr> 
    <tr> 
    <th>Color:</th> 
    <td>{{rows['color']}}</td> 
    </tr> 
    <tr> 
    <th>Quote:</th> 
    <td>{{rows['quote']}}</td> 
    </tr> 

</table> 
    </div> 


    </body> 
</html> 

它可能是更好的動態創建整個表,但我不知道在哪裏合適的地方做,這是

  • 在HTML文件中的JavaScript函數?
  • 或者也許在pongongo文件中保存mongodb數據庫中的信息?

處理將mongodb文檔發送到HTML表單的python代碼使用python Bottle模板。

@bottle.route('/view/<_id>', method = 'GET') 
def show_invoice(_id): 
    client = pymongo.MongoClient("mongodb://localhost") 
    db = client.orders 
    collection = db.myorders 
    from bson.objectid import ObjectId 
    result = collection.find_one({'_id': ObjectId(_id)}) 
    return bottle.template('invoice', rows = result) 

我非常感謝有人可以提供任何幫助! =)

回答

2

查看瓶子模板引擎的文檔,看起來您可以使用'ifs'和'fors'來完成此操作。

舉例來說,如果你爲了存儲在行[「訂單」],你不知道有多少,在你的模板,你可以放置:

%for item in rows['orders']: 
    <td>{{item}}</td> 
%end 

或者說你需要如果你的客戶訂購的是經常在缺貨的項目顯示一個特殊的警告,你已經在另一個變量傳遞,「缺貨」,指定此:

%if backorder: 
    <span>This item is frequently on backorder</span> 
%end 

我沒有測試過其中任意一個,但我使用Django和Flask模板引擎完成了類似的事情。我把這些樣品從這裏:

http://bottlepy.org/docs/dev/tutorial.html#templates

和這裏的瓶模板來格式化輸出「部分:

http://bottlepy.org/docs/dev/tutorial_app.html#using-bottle-for-a-web-based-todo-list

希望這有助於!

+0

非常感謝! – sreisman