2012-02-08 10 views
24

मैं सिर्फ Jinja2 सीख रहा हूँ। मैंने पहले कभी भी कोई templating नहीं किया है, इसलिए मुझे दस्तावेज बहुत भ्रमित लगता है।Jinja2 में लूप के लिए एक साधारण के साथ एक HTML तालिका कैसे बनाएं?

मैं एक साधारण फॉर लूप के साथ एक 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

कीवर्ड तर्क के रूप में बस itemstemplate.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

संबंधित मुद्दे