2012-02-08 57 views
24

Tôi chỉ đang học Jinja2. Tôi chưa bao giờ thực hiện bất kỳ khuôn mẫu nào trước đây nên tôi thấy tài liệu rất khó hiểu ngay bây giờ.Làm thế nào để xây dựng một bảng HTML với một vòng lặp đơn giản trong Jinja2?

Làm cách nào để xây dựng bảng HTML bằng vòng lặp FOR đơn giản? mẫu của tôi trông giống như sau:

{% 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 %} 

mã python của tôi trông như thế này:

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') 

tôi dường như không thể tạo ra bất kỳ bảng. Tôi cũng không biết nếu đây là cách tốt nhất để điền một bảng với một số lĩnh vực.

Trả lời

47

Chỉ cần vượt qua items đến template.render làm đối số từ khóa - nó phải là danh sách (thực sự bất kỳ lần lặp lại nào sẽ thực hiện) của các mục. Nếu bạn cần các mục con sử dụng một lớp hoặc một từ điển. Trong trường hợp đơn giản nhất, bạn có thể sử dụng một từ điển:

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) 

Và sau đó mã Jinja của bạn sẽ thay đổi một chút:

<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

tuyệt vời! Cảm ơn Sean, bạn là một cuộc sống an toàn hơn! Đã đấu tranh với điều này quá lâu và không tiến bộ :-) – NomadAlien

Các vấn đề liên quan