นี่อาจจะง่าย แต่ฉันมองไปรอบ ๆ แล้วก็ไม่พบคำตอบ วิธีใดดีที่สุดในการอ้างอิงรายการเดียวในรายการจากเทมเพลต Django
กล่าวอีกนัยหนึ่งฉันจะเทียบเท่า{{ data[0] }}
ภายในภาษาแม่แบบได้อย่างไร
ขอบคุณ.
นี่อาจจะง่าย แต่ฉันมองไปรอบ ๆ แล้วก็ไม่พบคำตอบ วิธีใดดีที่สุดในการอ้างอิงรายการเดียวในรายการจากเทมเพลต Django
กล่าวอีกนัยหนึ่งฉันจะเทียบเท่า{{ data[0] }}
ภายในภาษาแม่แบบได้อย่างไร
ขอบคุณ.
คำตอบ:
วิธีที่ดีกว่า: ตัวกรองเทมเพลตที่กำหนดเอง: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
เช่นรับ my_list [x] ในเทมเพลต:
ในเทมเพลต
{% load index %}
{{ my_list|index:x }}
templatetags / index.py
from django import template
register = template.Library()
@register.filter
def index(indexable, i):
return indexable[i]
ถ้าmy_list = [['a','b','c'], ['d','e','f']]
คุณสามารถใช้{{ my_list|index:x|index:y }}
ในเทมเพลตเพื่อรับmy_list[x][y]
ใช้งานได้ดีกับ "for"
{{ my_list|index:forloop.counter0 }}
ทดสอบแล้วใช้งานได้ดี ^ _ ^
{% for id in article_details.heading.contents.article_ids %} {% if id.type == 'DOI' %} {{ article_details.heading.contents.article_ids.forloop.counter0.value }} {% endif %} {% endfor %}
{{ data.0 }}
ควรทำงาน.
สมมติว่าคุณเขียนdata.obj
พยายาม Django และdata.obj
หากพวกเขาไม่ทำงานมันพยายามdata.obj()
data["obj"]
ในกรณีของคุณdata[0]
สามารถเขียนเป็น{{ data.0 }}
ไฟล์. แต่ฉันแนะนำให้คุณดึงdata[0]
มุมมองและส่งเป็นตัวแปรแยกต่างหาก
@ jennifer06262016 คุณสามารถเพิ่มตัวกรองอื่นเพื่อส่งคืนวัตถุภายใน django Queryset ได้อย่างแน่นอน
@register.filter
def get_item(Queryset):
return Queryset.your_item_key
ในกรณีนี้คุณต้องพิมพ์ {{Queryset | index: x | get_item}} ลงในเทมเพลตของคุณเพื่อเข้าถึงวัตถุพจนานุกรม มันใช้ได้กับฉัน
{{ data.foo }}
ซึ่งfoo
เป็นตัวแปรที่มีค่าดัชนีอยู่ในนั้นและไม่ได้ชื่อคุณสมบัติเป็น