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

大家好。我是龙卷风和马科的新手。此代码我已将龙卷风默认模板更改为mako,我知道在龙卷风中,我可以在html中使用static_url这种方式: <link rel="stylesheet" href="{{ static_url("css/reset.css") }}"> 但是我怎样才能在mako html中使用它? 我尝试了一些不同的方法,但它不起作用。任何人都可以帮忙,谢谢。python龙卷风使用mako模板,如何使用static_url方法?

回答

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