2014-10-22 12 views
26

Tôi có một phương thức trả về dữ liệu cần thiết trong mẫu cơ bản của tôi (nội dung cho chân trang toàn cầu).Flask + Jinja: Chuyển dữ liệu đến một mẫu cơ sở/Tất cả các mẫu

Làm cách nào để (1) chuyển một biến vào mẫu cơ sở (các mẫu khác mở rộng) hoặc (2) chuyển một biến cho tất cả mẫu trên toàn cầu mà không thêm nó vào cuộc gọi render_template?

+0

Không chắc chắn đây có phải là giải pháp tốt nhất hay không nhưng app.context_processor có thể trợ giúp. http://flask.pocoo.org/docs/0.10/templating/#context-processors – Gohn67

+0

@ Gohn67 đó chính xác là những gì tôi cần. Bạn có thể thêm như một câu trả lời và tôi sẽ chấp nhận? – okoboko

Trả lời

28

Từ tài liệu bình: http://flask.pocoo.org/docs/0.10/templating/#context-processors

Để tiêm biến mới tự động vào bối cảnh của một mẫu, xử lý bối cảnh tồn tại trong Flask. Trình xử lý ngữ cảnh chạy trước khi mẫu được hiển thị và có khả năng chèn các giá trị mới vào ngữ cảnh mẫu. Một bộ xử lý ngữ cảnh là một hàm trả về một từ điển . Các phím và các giá trị của từ điển này sau đó được sáp nhập với mẫu bối cảnh, đối với tất cả các mẫu trong ứng dụng:

Ví dụ từ tài liệu:

@app.context_processor 
def inject_user(): 
    return dict(user=g.user) 

Lưu ý rằng ví dụ này sử dụng g biến, mà đã có sẵn trong các mẫu.

Các vấn đề liên quan