में एक सूची के लिए परीक्षण जहां तक मैं देख सकता हूं, परीक्षण करने का कोई तरीका नहीं है कि कोई वस्तु Jinja2 में एक सूची उदाहरण है या नहीं। सबसे पहले, क्या यह सही और दूसरी बात है, क्या किसी ने Jinja2 में कस्टम टेस्ट/एक्सटेंशन लागू किया है? कोई भी मदद बहुत अच्छी रहेगी।Jinja2
Jinja2
उत्तर
आप आसानी से jinja2 में एक कस्टम फ़िल्टर कर सकते हैं।
सबसे पहले आप परीक्षा पद्धति बनाने के लिए:
def is_list(value):
return isinstance(value, list)
और एक कस्टम फ़िल्टर के रूप में जोड़ें:
j = jinja2.Jinja2(app)
j.environment.filters.update({
'is_list': is_list,
})
जिंजा कई builtin परीक्षण है। आप शायद iterable देख रहे हैं।
{% if var is iterable %}
मैं इस {% if var is iterable and var is not string %}
मेरे मामले में '{% अगर var स्ट्रिंग%} है}' पूरी तरह से काम किया; धन्यवाद। – berto
मेरी सेटअप में है जैसे कि यह किया था, मैं या तो एक स्ट्रिंग या जिंजा टेम्पलेट में आने से तार की सूची होने के लिए एक मूल्य के लिए चाहते हैं। तो वास्तव में जो मैंने परवाह की थी वह स्ट्रिंग बनाम सूची नहीं थी, लेकिन एकल आइटम बनाम एकाधिक आइटम। यदि आपका उपयोग केस समान है तो यह उत्तर मदद कर सकता है।
चूंकि "सूची है" के लिए अंतर्निहित परीक्षण नहीं है? जो तारों को भी खारिज कर देता है, मैंने एपीआई डिज़ाइन से एक पैटर्न उधार लिया और पाइथन पक्ष की सूची में एकल ऑब्जेक्ट्स को लपेट लिया और फिर जिन्जा पक्ष पर सूची की लंबाई की जांच की।
पायथन:
context = { ... }
# ex. value = 'a', or ['a', 'b']
if not isinstance(value, list):
value = [value]
context['foo'] = value
जिंजा:
{% if foo|length == 1 %}
single-item list
{% elif foo|length > 1 %}
multi-item list
{% endif %}
और अगर सभी आप क्या करना चाहते प्रदर्शन प्रयोजनों के लिए एक आइटम विभाजक जोड़ने है, तो आप स्पष्ट लंबाई की जांच और बस {{ value|join(', ') }}
छोड़ सकते हैं।
ऐसा लगता है कि इस उत्तर को किसी कारण से डाउनवोट प्राप्त हुआ है। यह मेरे लिए ठीक काम करता है, लेकिन अगर कोई आपके लिए काम नहीं करता है तो एक टिप्पणी जोड़ने में संकोच न करें। –
- 1. Jinja2
- 2. jinja2
- 3. jinja2
- 4. Jinja2
- 5. Jinja2
- 6. Jinja2
- 7. Jinja2
- 8. Jinja2
- 9. बोतल/Jinja2
- 10. मुझे Jinja2 कॉल ब्लॉक
- 11. Jinja2 इनलाइन टिप्पणियां
- 12. जांचें कि Jinja2
- 13. jinja2 पुनरावर्ती पाश शब्दकोश
- 14. एक Jinja2 एक्सटेंशन
- 15. Django: Jinja2 पर स्विचिंग?
- 16. जेएसओएन Jinja2 टेम्पलेट
- 17. jinja2.exceptions.TemplateNotFound त्रुटि
- 18. Jinja2: एक पाश
- 19. jinja2 नेस्ट चर
- 20. Jinja2 अगर स्टेटमेंट
- 21. jinja2: html escape variables
- 22. पायथन jinja2 टेम्पलेट, सूची
- 23. मको या Jinja2?
- 24. Jinja2 में वस्तु पर Iterate?
- 25. Google App Engine और Jinja2
- 26. टेम्पलेट से jinja2 लोड टेम्पलेट फ़ाइल
- 27. Jinja2 पर्यावरण निर्माण को अनुकूलित करना
- 28. Jinja2 वस्तुओं के लिए UndefinedErrors कि
- 29. Jinja2: बहुआयामी जावास्क्रिप्ट सरणी कैसे बनाएं?
- 30. ब्लॉक के साथ Jinja2 विरासत और
एक स्ट्रिंग भी पुनरावर्तनीय है, इसलिए यह – pors
काम नहीं करेगा, मैंने 'अनुक्रम' परीक्षण भी देखा है, लेकिन यह एक स्ट्रिंग को अनुक्रम भी मानता है। –