Jinja2:渲染模板继承吗?

| 我想使用模板呈现融合的Jinja2和Markdown页面,如下所示:
{% block title %}{{ title }}{% endblock %}

# {{ title[0] }}
# {{ title[1] }}

## Introduction
我可以使用上面的代码来生成HTML,但是当我将此脚本用于自定义创作应用程序时,我希望能够为每种类型的条目定义主模板。 当我尝试通过扩展主模板来呈现上面的页面时,
template.html
{% extends \'template.html\' %}

{% block title %}{{ title }}{% endblock %}

# {{ title[0] }}
# {{ title[1] }}

## Introduction
我收到一个错误:
Traceback (most recent call last):
  File \"compiler.py\", line 55, in <module>
    template = Template(text).render(parser.vars)
  File \"/usr/lib/python2.7/site-packages/jinja2/environment.py\", line 891, in render
    return self.environment.handle_exception(exc_info, True)
  File \"<template>\", line 1, in top-level template code
TypeError: no loader for this environment specified
您会看到有问题的行是
template = Template(text).render(parser.vars)
。 有什么办法可以渲染上面的模板代码并能够扩展
template.html
?     
已邀请:
        Jinja \的渲染器需要知道如何加载
template.html
,因此您需要给
Environment
一个模板加载器实例。 例如,假设文件
page.html
template.html
在当前目录中:
from jinja import FileSystemLoader
from jinja.environment import Environment

env = Environment()
env.loader = FileSystemLoader(\'.\')
tmpl = env.get_template(\'page.html\')
print tmpl.render(parser.vars)
已更新-您可以创建自定义模板加载器,也可以使用jinja2.loaders中定义的现有类之一。例如,ѭ11将在
dict()
实例中查找
template.html
,并将该值视为模板数据。从几乎任何地方(例如memcache,mysql,redis,Python对象等)加载模板应该很简单。 使用
DictLoader
的示例:
pages = (\'template.html\', \'page.html\')
templates = dict((name, open(name, \'rb\').read()) for name in pages)
env.loader = DictLoader(templates)
page.html
{% extends \"template.html\" %}
    

要回复问题请先登录注册