Giả sử tôi chuyển một từ điển vào mẫu jinja2 của tôi.
Trong giao diện tôi có cái gì đó nhưSửa đổi các thuộc tính từ điển trong jinja2
d = {}
#set other template stuff into d
get_params['cri'] = 'time'
get_params['order'] = 'asc'
d['get_params'] = get_params
return d
Trong mẫu tôi cần phải thay đổi giá trị của phím của get_params. Điều logic
{% set get_params.cri='src' %}
thất bại với một lỗi
TemplateSyntaxError: expected token '=', got '.'
Câu hỏi của tôi là làm thế nào để tôi sửa đổi các giá trị truyền cho một cuốn từ điển trong jinja2
(Câu hỏi này đã được hỏi here, nhưng tôi tìm câu trả lời khó hiểu và nó chỉ trả lời phần hợp nhất)
Trả lời EDIT:
Jinja2 cung cấp tiện ích 'do'. Để thêm rằng phần mở rộng để kim tự tháp, làm như sau trong tập tin __init__.py
#This line is alreadythere
config.include('pyramid_jinja2')
#Add this line
config.add_jinja2_extension('jinja2.ext.do')
Trong mẫu
{% do get_params.update({'cri':'src'}) %}
Tôi đã nhận được phần cập nhật (Thực tế đang thực hiện ngay bây giờ trong {{}} thẻ nhưng không in được). Làm cách nào để sử dụng khối {% do%}. Mã sẽ được nhiều đánh giá cao. Đặc biệt làm thế nào để kích hoạt phần mở rộng jinja2 từ kim tự tháp – RedBaron
Scratch mà ... quản lý để làm điều đó – RedBaron