Gördüğüm kadarıyla, bir nesnenin Jinja2'de bir Liste örneği olup olmadığını test etmenin bir yolu yoktur. İlk olarak, doğru ve ikinci olarak, Jinja2'de özel bir test/uzatma uygulayan var mı? Herhangi bir yardım harika olurdu.Jinja2 Listesinde Test Etme
cevap
Bu katmanı jinja2'de özel bir filtreyi kolayca yapabilirsiniz.
İlk size test yöntemini oluşturmak:
def is_list(value):
return isinstance(value, list)
Ve bir özel süzgeç olarak ekleyin:
j = jinja2.Jinja2(app)
j.environment.filters.update({
'is_list': is_list,
})
Jinja birçok yerleşik testleri vardır. Muhtemelen iterable'u arıyorsunuz.
{% if var is iterable %}
benim kurulumda bu {% if var is iterable and var is not string %}
benim durumumda {% eğer var% string ise}} mükemmel çalıştı; teşekkür ederim. – berto
gibi yaptım, ben olmak bir dize veya Jinja şablonuna gelen dizeleri listesine birine bir değer için istiyorum. Yani gerçekten önemsediğim şey dizgeye karşılık değil, tek bir öğeye ve birden çok öğeye sahip değildi. Kullanım durumunuz benzer ise bu cevap yardımcı olabilir.
"Liste nedir?" Için yerleşik bir test olmadığından Ayrıca dizeleri reddeder, API tasarımından bir desen ödünç alıp, Python tarafındaki tek bir nesneyi sardım ve sonra Jinja tarafındaki liste uzunluğunu kontrol ettim.
Python:
context = { ... }
# ex. value = 'a', or ['a', 'b']
if not isinstance(value, list):
value = [value]
context['foo'] = value
Jinja:
{% if foo|length == 1 %}
single-item list
{% elif foo|length > 1 %}
multi-item list
{% endif %}
Ve yapmak istediğiniz tüm görüntüleme amacıyla bir öğe ayırıcısını eklemek ise, açık uzunluğu çek ve sadece {{ value|join(', ') }}
atlayabilirsiniz
Bu cevabı bir sebepten dolayı bir not düştüğü görülüyor. Benim için iyi çalışıyor, ancak bir şey işe yaramıyorsa yorum eklemek için çekinmeyin. –
- 1. Django allauth'u test etme
- 2. MongooseJs Validasyonlarını Test Etme
- 3. VSTO Uygulamalarını Test Etme?
- 4. django projesini test etme
- 5. Performans Test Etme
- 6. Android Uygulamaları Test Etme
- 7. xml.etree.ElementTree'nin Eşdeğerliğini Test Etme
- 8. Clojure veritabanı birimi test etme/alay etme
- 9. jinja2
- 10. Jinja2
- 11. iOS Simulator'da SMS Test Etme
- 12. Ember.js: Denetleyicideki eylemleri test etme
- 13. Web paketi test etme Jest
- 14. Golang'da uyku fonksiyonunu test etme
- 15. RabbitMQ/MQTT performansını test etme
- 16. Geocoder gem ile test etme
- 17. Django'da iş akışlarını test etme
- 18. Django'da güney geçişleri test etme
- 19. jinja2.exceptions.TemplateNotFound neden sadece jinja2 kullanırken bile
- 20. Java'ya karşı test etme EE 6 API
- 21. Bir gdb uygunluk değişkeni tanımlandıysa test etme
- 22. Sinatra'da HTTPS'yi yerel olarak test etme
- 23. Birim Özel bir özellik sınıfını test etme
- 24. akka: Bir aktörün durdurulduğunu test etme
- 25. mocha ve chai ile test etme
- 26. QUnit ile AJAX isteklerini test etme
- 27. Birim Test Etme ASP.Net MVC Server.UrlDecode
- 28. SIM kart olmadan iPhone cihazında test etme
- 29. Üst düzey javascript olaylarını test etme
- 30. Robolectric ve ANT ile test etme
Ayrıca bir dize de yinelenebilir, bu yüzden çalışmaz – pors
Ben de 'sequence' testini fark ettim ama aynı zamanda bir dizi bir dizi ele alır. –