Đặt biến trong jinja


263

Tôi muốn biết cách đặt một biến bằng một biến khác trong jinja. Tôi sẽ giải thích, tôi có một menu con 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:

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

trong đó recordtype là một biến được cung cấp cho mẫu của tôi.


14
Những người đến đây từ Google: bạn có thể chủ yếu quan tâm đến các tài liệu chính thức trên setthẻ , hơn là lỗi cú pháp cụ thể do người hỏi mắc phải ở đây hoặc cách sửa lỗi, đó là những câu trả lời hàng đầu ở đây và tại địa chỉ trùng lặp được liên kết .
Mark Amery

1
@MarkAmery Ty! Đặc biệt phần này jinja.palletsprojects.com/en/2.11.x/templates/… cực kỳ hữu ích.
ruohola

Câu trả lời:


533

{{ }}yêu cầu mẫu 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 làm. Thay vào đó, hãy sử dụng {% set %}thẻ mẫu và sau đó chỉ định giá trị giống như cách bạn làm trong mã python thông thường.

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

Kết quả:

it worked

2
nếu biến của tôi là dict mà ngày nay {% bộ dict.key = 'test' %} không làm việc
Ib33X

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

Đó là một lời giải thích tuyệt vời và đơn giản. Thích nó :)
Faris Rayhan

chúng ta có thể tạo một biến jinja toàn cục và sử dụng nó trong toàn bộ tệp html mà chúng ta nhúng biến jinja không? @Soviut
Sri Test

50

Viết tắt tuyệt vời cho các bài tập nhiều biến

{% set label_cls, field_cls = "col-md-7", "col-md-3" %}

3
Điều này dường như không đến gần để trả lời câu hỏi?
John R Perry

25

Chỉ cần thiết lập nó như thế này

{% set active_link = recordtype -%}

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

14
Nó nằm trong câu hỏi ban đầu ¯ \ _ (ツ) _ / ¯
Graham P Heath
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.