class MainHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.render("index.html", messages=MessageMixin.cache)
因此MainHandler
未将request
或current_user
传递给index.html
。但在index.html
中,我尝试了<p>{{ current_user }}</p> <p>{{ request }}</p>
,然后生成了大量输出。这在龙卷风中是某种“全局变量”吗?
答案 0 :(得分:4)
答案 1 :(得分:0)
它们是Tornado中默认模板上下文的一部分。文档实际上涵盖了所有available ones
答案 2 :(得分:0)
秘密在于源代码!
tornado.web有一个名为'get_template_namespace'的函数,你甚至可以覆盖
代码明细:
def get_template_namespace(self):
""" Returns a dictionary to be used as the default template namespace.
May be overridden by subclasses to add or modify values.
The results of this method will be combined with additional
defaults in the tornado.template module and keyword arguments
to render or render_string.
"""
namespace = dict(
handler=self,
request=self.request,
current_user=self.current_user,
locale=self.locale,
_=self.locale.translate,
pgettext=self.locale.pgettext,
static_url=self.static_url,
xsrf_form_html=self.xsrf_form_html,
reverse_url=self.reverse_url
)
namespace.update(self.ui)
return namespace