2010-03-31 17 views
7

Tôi đang chạy khung vi mô Bottle trên Google App Engine. Tôi đang sử dụng Jinja2 cho các mẫu của mình. Và tôi đang sử dụng Beaker để xử lý các phiên. Tôi vẫn là một newbie Python khá lớn và tôi khá stoked tôi đã nhận này đến nay :) Câu hỏi của tôi là làm cách nào để truy cập dữ liệu phiên trong các mẫu? Tôi có thể nhận được dữ liệu phiên không có vấn đề trong mã python thực tế. Và tôi có thể chuyển dữ liệu phiên mỗi khi tôi gọi mẫu jinja. Nhưng vì tôi cần dữ liệu phiên trong thanh trình đơn chính của trang web ... điều đó có nghĩa là tôi phải chuyển nó trên mỗi trang. Có ai biết nếu tôi có thể truy cập nó trực tiếp trong các mẫu?Làm cách nào để truy cập dữ liệu phiên trong các mẫu Jinja2 (Khuôn khổ chai trên công cụ ứng dụng)?

Ví dụ: tôi cần dữ liệu phiên cho liên kết tiêu đề của tôi:

Trang chủ | Hỏi đáp | Đăng nhập

hoặc

Trang chủ | Hỏi đáp | Đăng xuất

Bất kỳ trợ giúp nào được đánh giá cao! : D

+0

tôi cập nhật câu trả lời của tôi. –

Trả lời

11

Bạn có thể thêm mọi thứ vào Jinja2 environment globals nếu bạn muốn chúng có thể truy cập được vào tất cả các mẫu. Xem this page để biết thêm thông tin.

Cập nhật:

Một ví dụ đơn giản là, đối với mã thiết lập của bạn:

from jinja2 import Environment, PackageLoader 
env = Environment(loader=PackageLoader('yourapplication', 'templates')) 

Sau đó, trong yêu cầu xử lý mã của bạn:

env.globals['session'] = session # Your session 
# Your template can contain things like {{ session['key'] }} 
template = env.get_template('mytemplate.html') 
print template.render(the='variables', go='here') 
#return response using rendered data 
+1

Tôi gặp sự cố khi tìm một số ví dụ. Bạn có thể cho tôi biết làm thế nào tôi sẽ thiết lập các biến toàn cầu? : D – TylerW

+0

Tuyệt vời! Cảm ơn rất nhiều. – TylerW