Tôi đang cố gắng để làm một cái gì đó như thế này:Làm cách nào để gián tiếp gọi macro trong mẫu Jinja2?
{% macro obj_type_1 %}
stuff
{% endmacro %}
{% macro obj_type_2 %}
stuff
{% endmacro %}
{{ (obj|get_type)(obj) }}
Trong ví dụ này, get_type
là một bộ lọc mà sẽ trở obj_type_1
hoặc obj_type_2
- tức là, tên của các vĩ mô để kêu gọi obj
. Tôi không muốn đánh dấu obj
với đầu ra cấu hình vì ngay bây giờ obj
được sử dụng trong một số mẫu làm dữ liệu cấu trúc, được hiển thị với đánh dấu khác nhau tùy thuộc vào ngữ cảnh.
Tôi biết cú pháp ở đây hơi bị tra tấn, nhưng tôi nghĩ đó là vì những gì tôi muốn làm là không thể ngay lập tức trong các mẫu Jinja. Tôi đang cố gắng để thay thế một schwack damn lớn nếu/elif/khác crap trong một số mã thế hệ cấu hình với các mẫu, nhưng bit này có vẻ là một điểm gắn bó.
Vì vậy, bạn đang về cơ bản tìm kiếm một cách để 'eval()' trong Jinja2? – Blender
Gần; Tôi muốn gọi macro theo tên. –