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

Ainsi, le MainHandler ne passe pas request ou current_user à index.html. Mais dans index.html j'ai essayé <p>{{ current_user }}</p> <p>{{ request }}</p> et puis il y a beaucoup de sortie générée. Est-ce que c'est une sorte de 'variable globale' dans Tornado?Tornado - 'Variables globales' en tornade?

Répondre

4

Plusieurs choses vous sont données gratuitement dans les templates Tornado.

Ces variables n'ont pas besoin d'être transmises - c'est ce que vous voyez avec current_user et request.

Voici une list de toutes les variables que vous obtenez par défaut

+0

Il aide beaucoup! Merci ! – CDT

0

Ils font partie du contexte de modèle par défaut dans Tornado. La documentation couvre en fait tous les available ones

0
  • Le secret est dans le code source!

  • tornado.web a une fonction nommée 'get_template_namespace', vous pouvez même remplacer

  • Code détail:

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