我试图以一种使其更易于管理的方式组织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'
如何以最有效的方式访问子目录中的模板?
答案 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
。