2010-09-16 43 views
141

Tôi muốn biết làm thế nào tôi có thể đặt biến với một biến khác trong jinja. Tôi sẽ giải thích, tôi có một menu phụ và tôi muốn hiển thị liên kết nào đang hoạt động. Tôi đã thử điều này:Đặt biến trong jinja

{% set active_link = {{recordtype}} -%} 

trong đó recordtype là biến cho mẫu của tôi.

+69

Tôi nghĩ đó là khoảng thời gian để chấp nhận Câu trả lời của Soviut;) –

+1

Bản sao có thể có của [Biến mẫu tham chiếu trong biểu thức Jinja] (http://stackoverflow.com/questions/32024551/reference-template-variable-within-jinja-expression) – davidism

+1

@KyleWild, nó đã được chỉ 6 năm kể từ câu trả lời của Soviut. Hãy xem liệu MyTux có thể kéo dài đến 10 năm không :) –

Trả lời

334

{{ }} cho mẫu biết in giá trị, điều này sẽ không hoạt động trong các biểu thức như bạn đang cố gắng thực hiện. Thay vào đó, hãy sử dụng thẻ mẫu {% set %} và sau đó gán giá trị giống như cách bạn làm trong mã python bình thường.

{% set testing = 'it worked' %} 
{% set another = testing %} 
{{ another }} 

Kết quả:

it worked 
+0

nếu biến của tôi là dict bây giờ {% set dict.key = 'test'%} không hoạt động – Ib33X

+20

Điều đó nghe có vẻ như bạn đang cố gắng làm quá nhiều công việc bên trong mẫu. Nhưng tôi nghĩ rằng bạn có thể truy cập vào dict bằng cách sử dụng dấu ngoặc vuông. – Soviut

+0

Câu trả lời đã xóa cũng bao gồm liên kết này, là thông tin bổ sung cho câu trả lời này: http://jinja.pocoo.org/docs/tricks/#highlighting-active-menu-items – Pascal

9

Chỉ cần Thiết lập nó như

{% set active_link = recordtype -%} 
+4

Tại sao cụ thể như vậy (dấu trừ ở kết thúc nhưng không phải lúc đầu)? Điều này sẽ loại bỏ dấu vết nhưng không dẫn đến khoảng trắng, nếu tôi không nhầm. Để kết thúc? – Leonid

12

đẹp viết tắt này cho Nhiều bài tập biến

{% set label_cls, field_cls = "col-md-7", "col-md-3" %} 
Các vấn đề liên quan