Thẻ slice trong mẫu Django có thể sử dụng mã cắt của python, nhưng cú pháp không khác gì một cách khác biệt. Ví dụ, nếu bạn muốn để có được một phần tử của một chuỗi với một biến, trong python bạn muốn viết một cái gì đó tương tự như sau:
>>>mylist = ["0th Element", "1th Element"]
>>>zero, one = 0, 1
>>>mylist[zero]
"0th Element"
>>>mylist[one]
"1th Element"
Sử dụng cú pháp này với Django lát mẫu thẻ sẽ trả về một danh sách cắt lát trong mọi trường hợp, các tiện ích đáng ngờ để nhận một mục của chỉ số nổi tiếng:
{% with "0" as zero %}
{% with "1" as one %}
{% with "2" as two %}
{{mylist|slice:zero}} {{mylist|slice:one}} {{mylist|slice:two}}
{% endwith %}
{% endwith %}
{% endwith %}
ám vào html:
[] ["0th Element"] ["0th Element", "1th Element"]
Lưu ý sự khác biệt: bạn đang nhận lại sult của mylist[:x]
thay vì mylist[x]
.
Django cung cấp đủ công cụ để giải quyết vấn đề này. Bí quyết đầu tiên là sử dụng các lát rõ ràng như 0:1
cho các chỉ mục của bạn và sau đó |join:""
danh sách kết quả thành một phần tử duy nhất.Cũng giống như vậy:
{% with "0:1" as zero %}
{{mylist|slice:zero|join:""}}
{% endwith %}
Sản lượng:
0th Element
này do thỏa thuận hợp đặc biệt thuận tiện nếu bạn cần truy cập vào chỉ số vòng lặp chính của khi giao dịch với một iterable bên trong một vòng lặp con:
{% for parent in parent_loop %}
{% cycle "0:1" "1:2" "2:3" as parent_loop_index silent %}
{% for child in child_loop %}
{{child|slice:parent_loop_index|join:""}}
{% endfor %}
{% endfor %}
Hoàn thành với không có gì nhưng phần chứng khoán, mặc dù tôi không nghĩ rằng Django đã thực hiện thành tích được nêu ra.
bạn có thể chuyển các giá trị bạn cần trong chế độ xem không? nếu bạn biết phạm vi trước khi tay tại sao không chỉ vượt qua các giá trị chính xác bạn đang cố gắng để hiển thị? – dm03514
Không, tôi không thể trong trường hợp này. Đó là trang giỏ hàng tùy chỉnh được mã hóa cứng và tất cả điều này là một phần của một số biểu mẫu lồng nhau. – Goran