2010-06-10 8 views
12

Trong Jinja2, làm cách nào để có thể truy cập các biến được gán (tức là {% set X=Y %}) trong các tệp được kết hợp với include?Nhập/bao gồm các biến được gán trong Jinja2

tôi mong đợi sau đây để làm việc cho hai tập tin Jinja2:

A.jinja:

Stuff 
{% include 'B.jinja' -%} 
B has {{ N }} references 

B.jinja:

{% set N = 12 %} 

tôi mong đợi rằng A.jinja, khi biên soạn với Jinja2 , sẽ tạo ra kết quả sau:

Stuff 
B has 12 references 

Tuy nhiên, nó tạo ra:

Stuff 
B has references 

Tôi muốn được nhiều nghĩa vụ đối với bất kỳ đầu vào như thế nào để truy cập vào các biến Jinja2, chẳng hạn như N ở trên, trong tập tin có chứa các tập tin mà N là bộ.

Cảm ơn bạn đã đọc.

Brian

Trả lời

19

Có sự khác biệt giữa includeimport, mặc dù bạn sẽ có thể làm cả hai.

  • include 'B.jinja chỉ cần hiển thị mẫu và bỏ qua mọi biến hoặc macro biến trong đó.
  • import 'B.jinja' as B, nhập B như thể nó là một mô-đun, vì vậy bạn phải xuất B.N.
  • from 'B.jinja' import N nhập khẩu biến N trực tiếp.

Thay đổi dòng nhập của bạn thành tùy chọn cuối cùng và xem điều đó có khắc phục được sự cố hay không. Nếu bạn cần thêm trợ giúp, hãy xem the documentation.

+1

Không phải dòng cuối cùng sẽ là 'từ 'B.jinja' nhập N'? – smac89