1
class MainHandler(BaseHandler):
    @tornado.web.authenticated
    def get(self):
        self.render("index.html", messages=MessageMixin.cache)

所以MainHandler不通过requestor current_userto index.html。但是在index.html我尝试<p>{{ current_user }}</p> <p>{{ request }}</p>之后,会产生很多输出。那么这是 Tornado 中的某种“全局变量”吗?

4

3 回答 3

3

Tornado 模板中免费提供了一些东西。

这些变量不需要传入 - 这就是您在 current_user 和 request 中看到的。

这是您默认获得的所有变量的列表

于 2013-04-26T12:53:20.300 回答
1
  • 秘诀就在源代码中!

  • 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

于 2016-12-23T08:15:15.747 回答
0

它们是 Tornado 中默认模板上下文的一部分。该文档实际上涵盖了所有可用的

于 2014-12-16T20:39:13.140 回答