我想在jinja2中使用繼承的概念將配置的不同部分分隔成多個獨立的子模板。渲染Jinja2繼承
最終,使之成爲更復雜的層次結構的工作,是這樣的:
parent.jj2
|_child1.jj2
| |_child11.jj2
| |
| |_child12.jj2
|
|_child2.jj2
|_child21.jj2
|
|_child22.jj2
在這個例子中,我只用2子模板:
parent.jj2模板:
## Main file header
{% block child1 %}{% endblock %}
##
{% block child2 %}{% endblock %}
## Main file tail
child1.jj2模板:
{% extends "parent.jj2" %}
{% block child1 %}
{% for i in list %}
child1 line {{ i }}
{% endfor %}
{% endblock %}
child2.jj2模板:
{% extends "parent.jj2" %}
{% block child2 %}
{% for i in list %}
child2 line {{ i }}
{% endfor %}
{% endblock %}
我用下面的渲染,在子模板分別呈現,但它不會產生期望的結果:
使用的Jinja2加載程序:
list1 = \
[1,2,3]
list2 = \
['a','b','c']
loader = jinja2.FileSystemLoader(os.getcwd())
jenv = jinja2.Environment(loader=loader, trim_blocks=True,lstrip_blocks=True)
template = jenv.get_template('child1.jj2')
print template.render(list=list1)
template = jenv.get_template('child2.jj2')
print template.render(list=list2)
如何以這樣的方式調用渲染器,以便使用單個文件中的子塊渲染主模板?
期望的結果:
## Main file header
child line1 1
child line1 2
child line1 3
##
child line1 a
child line1 b
child line1 c
## Main file tail
當前結果:
## Main file header
child line1 1
child line1 2
child line1 3
##
## Main file tail
## Main file header
##
child line1 a
child line1 b
child line1 c
## Main file tail
#Garesh-shyara,這是不產生預期結果的初始條件。 – AJN 2015-04-07 23:31:46