Python Jinja2 Tempates子目录

Python Jinja2 Tempates子目录,python,jinja2,webapp2,Python,Jinja2,Webapp2,我试图以一种更易于管理的方式组织Jinja2模板。例如,我有一组面向团队的页面和一组原型,因此我的dir结构是: app>templates>foo_dir>bar.html 在呈现模板的脚本中,我有以下内容: templates_dir = os.path.join(os.path.dirname(__file__), 'templates') JINJA_PAGES = jinja2.Environment( loader=jinja2.FileSystemLoader(template

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

app>templates>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'
如何以最有效的方式访问子目录中的模板?

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


现在
JINJA\u页面。get\u template
将首先在
templates\u dir
中查找请求的模板。如果找不到该模板,它将在
foo\u dir

中查找它确实可以。您可以将模板从一个目录扩展到另一个目录中的模板,而无需任何参数。我猜这会很好,但你已经验证了这一点,这很好。谢谢
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)