2013-07-25 2 views
2

mongodb 컬렉션의 내용을 표시하는 HTML 테이블을 만들려고합니다. 컬렉션에는 소기업의 다양한 고객 주문에 대한 데이터가 포함됩니다. 데이터 중 일부는 고객 이름과 전화 번호와 같은 특정 문서에 항상 존재합니다. 그러나 한 문서에서 한 항목을 주문할 수 있고 다른 한 항목은 세 항목을 주문할 수 있으므로 주문한 품목과 같이 각 문서 내의 일부 데이터는 달라야합니다. 그래서, 각 문서에 임의의 숫자 필드를 포함하는 문서가있는 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 파일 내에서 자바 스크립트 함수에

  • 을 어디 있는지 확실하지 않다?
  • mongodb 데이터베이스의 정보를 유지하는 pymongo 파일에 있습니까?

mongodb 문서를 HTML 양식으로 보내는 것을 처리하는 파이썬 코드는 파이썬 병 템플릿을 사용합니다.

@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