Jinja2模板子目录

时间:2014-05-30 18:37:57

标签: python jinja2 webapp2

我试图以一种使其更易于管理的方式组织Jinja2模板。例如,我有一组面向团队的页面和一组原型,所以我的目标结构是:

app>模板> foo_dir>一个bar.html

在我的脚本中渲染模板,我有以下内容:

templates_dir = os.path.join(os.path.dirname(__file__), 'templates')
JINJA_PAGES = jinja2.Environment(
  loader=jinja2.FileSystemLoader(templates_dir),
  extensions=['jinja2.ext.autoescape'],
  autoescape=True)


class Page(webapp2.RequestHandler):

  category = None
  template = category + None
  url = None

  def get(self):
    template = JINJA_PAGES.get_template(self.template)
    rendered = template.render(self.TemplateArgs())
    self.response.write(rendered)

  def TemplateArgs(self):
    return {}


class FooPage(Page):

  category = 'page_category'
  template = templates_subdir + 'template_name'
  url = '/foo'

如何以最有效的方式访问子目录中的模板?

1 个答案:

答案 0 :(得分:1)

FileSystemLoader上的文档中,您可以传递要搜索的目录列表(按顺序)。即:

templates_dir = os.path.join(os.path.dirname(__file__), 'templates')
foo_dir = os.path.join(templates_dir, 'foo_dir')
JINJA_PAGES = jinja2.Environment(
    loader=jinja2.FileSystemLoader([templates_dir, foo_dir]),
    extensions=['jinja2.ext.autoescape'],
    autoescape=True)

现在JINJA_PAGES.get_template将首先在templates_dir中查找所请求的模板。如果找不到该模板,则接下来会查看foo_dir