Câu hỏi Tham khảo mục danh sách theo chỉ mục trong mẫu Django?


Điều này có thể đơn giản, nhưng tôi nhìn quanh và không thể tìm thấy câu trả lời. Cách tốt nhất để tham khảo một mục duy nhất trong một danh sách từ một mẫu Django là gì?

Nói cách khác làm thế nào để tôi làm tương đương với {{ data[0] }} trong ngôn ngữ mẫu?

Cảm ơn.


76
2018-01-10 20:27


gốc




Các câu trả lời:


Nó có vẻ như {{ data.0 }}. Xem Biến và tra cứu.


125
2018-01-10 20:29



Chỉ cần tìm thấy nó. Vâng, nó được cho phép và nó hoạt động. Cảm ơn! - user456584
Điều gây phiền nhiễu là tôi không thể nói {{ data.foo }}, Ở đâu foo là một biến có giá trị chỉ mục trong đó và không phải là tên thuộc tính. - Mike DeSimone
@MikeDeSimone xem câu trả lời của tôi stackoverflow.com/a/29664945/2714931 - WeizhongTu
Nếu bạn sẵn sàng tạo thẻ tùy chỉnh, bạn có thể làm nhiều hơn nữa. Ở đây chúng tôi chỉ làm việc với các công cụ tích hợp sẵn. - Mike DeSimone
Liên kết không hoạt động nữa, hãy thử cách này: docs.djangoproject.com/en/1.10/ref/templates/api/… - Speccy


Một cách tốt hơn: bộ lọc mẫu tùy chỉnh: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

chẳng hạn như lấy List [x] trong các mẫu:

trong mẫu

{% load index %}
{{ List|index:x }}

templatetags / index.py

from django import template
register = template.Library()

@register.filter
def index(List, i):
    return List[int(i)]

nếu List = [['a','b','c'], ['d','e','f']], bạn có thể dùng {{ List|index:x|index:y }} trong mẫu để nhận List[x][y]

Nó hoạt động tốt với "for"

{{ List|index:forloop.counter0 }}

Thử nghiệm và hoạt động tốt ^ _ ^


39
2018-04-16 03:41



Một trong những giải thích đơn giản nhất để tìm hiểu ứng dụng Thẻ mẫu! - vanguard69
Điều này thật tuyệt! Nhưng với định dạng {{List | index: x}}, làm cách nào để truy cập vào các giá trị mà tôi thường sử dụng dấu chấm? {{(Danh sách | chỉ mục: x) .name}} rõ ràng không hoạt động. Cảm ơn bạn! - JTFouquier
Chính xác những gì tôi đang tìm kiếm. Cảm ơn bạn! - grantathon


{{ data.0 }} nên làm việc.

Giả sử bạn đã viết data.obj django cố gắng data.obj và data.obj(). Nếu họ không làm việc, nó sẽ cố gắng data["obj"]. Trong trường hợp của bạn data[0] có thể được viết như {{ data.0 }}. Nhưng tôi khuyên bạn nên kéo data[0] trong chế độ xem và gửi dưới dạng biến riêng biệt.


21
2018-01-10 20:33





@ jennifer06262016, bạn chắc chắn có thể thêm một bộ lọc khác để trả về các đối tượng bên trong một bộ truy vấn django.

@register.filter 
def get_item(Queryset):
    return Queryset.your_item_key

Trong trường hợp đó, bạn sẽ nhập một cái gì đó như thế này {{Queryset | index: x | get_item}} vào mẫu của bạn để truy cập một số đối tượng từ điển. Nó làm việc cho tôi.


1
2018-04-15 07:23