2015-08-30 1 views
0
#!/usr/bin/env python 
# -*- coding:utf-8 -*- 

import _env 
import tornado.web 
import mako.lookup 
import mako.template 
from os.path import join 


TEMPLATE_PATH = [join(_env.PREFIX, 'templates')] 

MAKO_LOOK_UP = mako.lookup.TemplateLookup(
    directories=TEMPLATE_PATH, 
    input_encoding='utf-8', 
    output_encoding='utf-8', 
    filesystem_checks=False, 
    encoding_errors='replace', 
    module_directory=join(_env.PREFIX, '_templates'), 
) 


class BaseHandler(tornado.web.RequestHandler): 
    def initialize(self, lookup=MAKO_LOOK_UP): 
     '''Set template lookup object, Defalut is MAKO_LOOK_UP''' 
     self._lookup = lookup 

    def render_string(self, filename, **kwargs): 
     '''Override render_string to use mako template. 
     Like tornado render_string method, this method 
     also pass request handler environment to template engine. 
     ''' 
     try: 
      template = self._lookup.get_template(filename) 
      env_kwargs = dict(
       handler=self, 
       request=self.request, 
       current_user=self.current_user, 
       locale=self.locale, 
       _=self.locale.translate, 
       static_url=self.static_url, 
       xsrf_form_html=self.xsrf_form_html, 
       reverse_url=self.application.reverse_url, 
      ) 
      env_kwargs.update(kwargs) 
      return template.render(**env_kwargs) 
     except: 
      # exception handler 
      pass 

    def render(self, filename, **kwargs): 
     self.finish(self.render_string(filename, **kwargs)) 

Salut, tous. Je suis un plus récent à tornado et mako. Ce code j'ai changé le modèle par défaut tornado en mako, je sais en tornade je peux utiliser static_url en html de cette façon: <link rel="stylesheet" href="{{ static_url("css/reset.css") }}"> mais comment puis-je l'utiliser dans mako html? J'ai essayé différentes façons mais ça ne marche pas. Tout le monde peut aider, merci.python tornado utilise le modèle mako, comment utiliser la méthode static_url?

Répondre

1
<link rel="stylesheet" href="${static_url("css/reset.css") } ">