2015-08-30 3 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)) 

Hi, все. Я новичок в торнадо и мако. Этот код я изменил шаблон шаблона торнадо для mako, я знаю, что в торнадо я могу использовать static_url в html таким образом: <link rel="stylesheet" href="{{ static_url("css/reset.css") }}"> но как его использовать в mako html? Я пробовал несколько разных способов, но он не работает. Любой может помочь, спасибо.python торнадо использовать шаблон mako, как использовать метод static_url?

ответ