2012-02-08 4 views
24

저는 Jinja2를 배우고 있습니다. 나는 지금까지 어떤 문서 작업도 해본 적이 없기 때문에 지금 당장이 문서를 매우 혼란스럽게 생각합니다.Jinja2에서 간단한 for 루프를 사용하여 HTML 테이블을 작성하는 방법은 무엇입니까?

간단한 FOR 루프로 HTML 테이블을 작성하려면 어떻게해야합니까? 내 템플릿은 다음과 같은 :

{% for item in items %} 
<TR> 
    <TD class="c1"><IMG src="favicon.ico"></TD> 
    <TD class="c2">{{date}}</TD> 
    <TD class="c3">{{id}}</TD> 
    <TD class="c4"><SPAN>{{position}}</SPAN></TD> 
    <TD class="c5"><SPAN>{{status}}</SPAN></TD> 
</TR> 
{% endfor %} 

내 파이썬 코드는 다음과 같습니다

import jinja2 
loader = jinja2.FileSystemLoader('./index.html') 
env = jinja2.Environment(loader=loader) 
template = env.get_template('') 
print template.render(date='2012-02-8', id='123', position='here', status='Waiting') 

내가 어떤 테이블을 생성 할 수없는 것. 또한 여러 필드가있는 테이블을 채우는 가장 좋은 방법인지 여부를 알 수 없습니다.

답변

47

키워드 인수로 items에서 template.render을 전달하기 만하면됩니다. 실제로 항목을 반복 할 수 있어야합니다. 하위 항목이 필요한 경우 클래스 또는 사전을 사용하십시오.

items = [] 
for i in range(1, 11): 
    i = str(i) 

    # dict == {} 
    # you just don't have to quote the keys 
    an_item = dict(date="2012-02-" + i, id=i, position="here", status="waiting") 
    items.append(an_item) 

# ... your code here ... 

template.render(items=items) 

다음 신사 코드가 약간 변경됩니다 :

<table> 
{% for item in items %} 
<TR> 
    <TD class="c1"><IMG src="favicon.ico"></TD> 
    <TD class="c2">{{item.date}}</TD> 
    <TD class="c3">{{item.id}}</TD> 
    <TD class="c4"><SPAN>{{item.position}}</SPAN></TD> 
    <TD class="c5"><SPAN>{{item.status}}</SPAN></TD> 
</TR> 
{% endfor %} 
</table> 
+0

환상적인 가장 간단한 경우에는 사전을 사용할 수 있습니다! 감사합니다 숀, 당신은 인생을 더 안전하게 지냅니다! 너무 오랫동안 이것으로 고투하고 진전을 보이지 않았다. :-) – NomadAlien

관련 문제