tôi có mã tương tự như sau trong một trong những mẫu jinja tôibiến vòng lặp Jinja là không có sẵn trong bao gồm-d mẫu
{% for post in posts %}
{% include ["posts/" + post.type + ".html", "posts/default.html"] %}
{% endfor %}
mà là nghĩa vụ phải làm cho mỗi post
bên trong bộ sưu tập posts
, tùy thuộc vào .type
của bài đăng. Tôi có một thiết lập mẫu khác nhau cho mỗi post.type
. Và đối với những người không có mẫu, nó sẽ hoàn nguyên về mẫu bài đăng default
.
Bây giờ, tôi muốn chỉ mục bài đăng được hiển thị từ dưới cùng, bên trong mẫu bài đăng, được cung cấp bởi loop.revindex
. Nhưng vì một lý do nào đó, nếu tôi sử dụng loop.revindex
bên trong mẫu bài đăng, tôi nhận được thông báo lỗi UndefinedError: 'loop' is undefined
.
Vì vậy, là loop
không có sẵn trong các mẫu include
d? Đây có phải là do thiết kế không? Tôi có làm điều gì đó sai trái với cách tôi tổ chức các mẫu của tôi cho điều này không có sẵn không?
Sửa Được rồi, tôi đã đưa ra một cách giải quyết, trong vòng lặp for, trước khi tôi bao gồm mẫu của tôi, tôi làm
{% set post_index = loop.revindex %}
và sử dụng post_index
bên trong bài mẫu. Không lý tưởng, nhưng có vẻ như là cách duy nhất. Tôi vẫn muốn biết các giải pháp của bạn mặc dù.
Chỉnh sửa 2 Một điều khác, tôi có thể truy cập vào biến post
bên trong include
d mẫu, nhưng không phải là loop
biến.
Đúng, đặt nó thành biến cục bộ khác là giải pháp, tôi đã tìm ra ngay sau khi đăng câu hỏi. Xem chỉnh sửa của tôi cho câu hỏi. Không yêu cầu 'with'. Không biết 'với' quá, cảm ơn cho tip :) –