2012-08-15 19 views
89

अगर मैं users की एक सूची है ["Sam", "Bob", "Joe"] कहता हूँ, मैं कुछ करना चाहता हूँ जहाँ मैं कर सकते हैं मेरी जिंजा टेम्पलेट फ़ाइल में उत्पादन:जिन्जा पायथन टेम्पलेट में अल्पविराम सीमांकित सूची कैसे आउटपुट करें?

{% for user in userlist %} 
    <a href="/profile/{{ user }}/">{{ user }}</a> 
    {% if !loop.last %} 
     , 
    {% endif %} 
{% endfor %} 

मैं उत्पादन टेम्पलेट हो बनाना चाहते:

Sam, Bob, Joe 

मैंने उपरोक्त कोड को जांचने की कोशिश की कि यह लूप के अंतिम पुनरावृत्ति पर था या नहीं, तो कोई कॉमा डालें, लेकिन यह काम नहीं करता है। मैं यह कैसे करु?

+0

जिन्जा, जैसे पायथन, एक अस्वीकरण ऑपरेटर के रूप में '!' का उपयोग नहीं करता है। "नहीं" वर्तनी है "नहीं"। – geoffspear

उत्तर

150

आप अपने if जांच होना चाहते हैं:

{% if not loop.last %} 
    , 
{% endif %} 

ध्यान दें कि आप भी If Expression का उपयोग करके कोड को छोटा कर सकते हैं:

{{ "," if not loop.last }} 
+1

यह भयानक है, खासकर एचटीएमएल – Sinux

+0

में लूप के अंत में बहुत साफ और संक्षिप्त! –

+3

बस fyi, आपको इसे अपनी सेटिंग्स के आधार पर एक/अन्य बनाने की आवश्यकता हो सकती है। और जानकारी। यहां पाया जा सकता है: https://github.com/pallets/jinja/issues/710 –

107

तुम भी अंतर्निहित इस्तेमाल कर सकते हैं "में शामिल होने" फिल्टर (http://jinja.pocoo.org/docs/templates/#join इस तरह:

{{ users|join(', ') }} 
+1

जबकि यह एक सीएसवी बनाने के लिए काम करता है, उसे देखकर उपरोक्त उदाहरण, इसका उपयोग आस-पास के एंकर के साथ नहीं किया जा सकता है। – triunenature

+0

यह दृष्टिकोण से बचने के साथ अच्छी तरह से काम नहीं करता है: [ '{{[' एक \ ',' बी '] | में शामिल होने के ("', '")}}'] पैदा करता है [ 'एक ' ', ' बी '] – stewbasic

+0

यह पहली चीज की कोशिश की जानी चाहिए। यदि यह वांछित के रूप में काम नहीं करता है, तो एक और समाधान आज़माएं, लेकिन यह निश्चित रूप से सबसे साफ है। – Jerad

44

और joinerhttp://jinja.pocoo.org/docs/dev/templates/#joiner

{% set comma = joiner(",") %} 
{% for user in userlist %} 
    {{ comma() }}<a href="/profile/{{ user }}/">{{ user }}</a> 
{% endfor %} 

से यह इस सटीक उद्देश्य के लिए बनाया गया है का उपयोग कर।

+0

यह वास्तव में मेरे पीछे एक अच्छा काम करने के बिना, मेरे लिए बहुत अच्छा काम किया। इस के लिए धन्यवाद! –

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