Trang webapp2 (http://webapp-improved.appspot.com/api/webapp2_extras/jinja2.html) có hướng dẫn về cách sử dụng webapp2_extras.jinja2
và mã bên dưới.lý do trang trí các phiên bản Jinja2 với @ webapp2.cached_property
Câu hỏi của tôi là: lý do khiến bộ nhớ cache webapp2_extras.jinja2.Jinja2
trả về phiên bản return jinja2.get_jinja2(app=self.app)
? Tôi đã kiểm tra mã số @webapp2.cached_property
và nhận thấy rằng nó lưu trữ cá thể Jinja2
trong một phiên bản BaseHandler
, sẽ bị hủy sau khi yêu cầu, vậy tại sao phải lưu vào bộ nhớ cache? Tôi đã bỏ lỡ một cái gì đó ở đây?
import webapp2 from webapp2_extras import jinja2 class BaseHandler(webapp2.RequestHandler): @webapp2.cached_property def jinja2(self): # Returns a Jinja2 renderer cached in the app registry. return jinja2.get_jinja2(app=self.app) def render_response(self, _template, **context): # Renders a template and writes the result to the response. rv = self.jinja2.render_template(_template, **context) self.response.write(rv)
Hài hước bạn đã hỏi rằng ... chỉ cần có một cái nhìn tại cùng và không thể có được điểm hoặc là ... Có một điểm để cached_property tất nhiên cho những thứ được sử dụng nhiều hơn một lần trong một yêu cầu ... – thomasf1