ฉันจะรับจำนวนองค์ประกอบในรายการในเทมเพลต jinja2 ได้อย่างไร
ตัวอย่างเช่นใน Python:
print(template.render(products=[???]))
และใน jinja2
<span>You have {{what goes here?}} products</span>
ฉันจะรับจำนวนองค์ประกอบในรายการในเทมเพลต jinja2 ได้อย่างไร
ตัวอย่างเช่นใน Python:
print(template.render(products=[???]))
และใน jinja2
<span>You have {{what goes here?}} products</span>
คำตอบ:
<span>You have {{products|length}} products</span>
คุณยังสามารถใช้ไวยากรณ์นี้ในการแสดงออกเช่น
{% if products|length > 1 %}
jinja2 ของฟิลเตอร์ในตัวมีเอกสารที่นี่ ; และโดยเฉพาะอย่างยิ่งที่คุณได้พบแล้วlength
(และคำพ้องความหมายcount
) มีการบันทึกไว้ใน:
ส่งคืนจำนวนรายการของลำดับหรือการแมป
ดังนั้นอีกครั้งที่คุณพบ{{products|count}}
(หรือเทียบเท่า{{products|length}}
) ในเทมเพลตของคุณจะให้ "จำนวนผลิตภัณฑ์" ("ความยาวของรายการ")
{% set item_count = items | length %}
ตราบใดที่items
เป็นรายการ, Dict, ฯลฯ
ความคิดเห็นของอเล็กซ์ดูดี แต่ฉันก็ยังสับสนกับการใช้ช่วง ต่อไปนี้ใช้ได้กับฉันในขณะที่ทำงานโดยมีเงื่อนไขโดยใช้ความยาวภายในช่วง
{% for i in range(0,(nums['list_users_response']['list_users_result']['users'])| length) %}
<li> {{ nums['list_users_response']['list_users_result']['users'][i]['user_name'] }} </li>
{% endfor %}
ฉันประสบปัญหากับความยาวของ None ซึ่งนำไปสู่ข้อผิดพลาดเซิร์ฟเวอร์ภายใน: TypeError: วัตถุประเภท 'NoneType' ไม่มี len ()
วิธีแก้ปัญหาของฉันเพิ่งแสดง 0 ถ้าวัตถุไม่มีและคำนวณความยาวของประเภทอื่น ๆ เช่นรายการในกรณีของฉัน:
{{'0' if linked_contacts == None else linked_contacts|length}}