我的职业是html/css,我一直作为模板设计师在django项目中工作。我目前在一个使用Jinja2的网站上工作,我已经使用了大约两个星期。通过阅读文档,我发现Jinja2不支持多级模板继承,因为您不能做多个级别的模板继承
{% extends "foo" %}每次渲染。现在我确信你可以在Django中做到这一点,Django非常强大,因为你可以指定一个基本模板,在此基础上指定3个或4个模板,然后使用这些基本模板构建页面的主要部分。继承的目的不是为了让你有更多的能力来抽象,所以你只需要处理唯一的代码吗?
在任何情况下,我都不知道在这里做什么。我不知道是否有什么方法可以像使用Django模板一样好用。我不是Django或Jinja(2)的专家,但我可以提供所需的任何信息。
发布于 2009-12-30 09:05:53
从文档的表述方式来看,它似乎不支持深度继承(n)级别。
与Python Jinja不同,
不支持多重继承。所以你只能有一个叫做每次渲染的扩展标签。
我不知道这只是一条规则,说每个模板1个扩展....我现在知道了,在jinja频道的帮助下。
发布于 2013-05-22 15:05:34
使用jinja2实现多层次模板的最佳方法之一是使用'include‘,假设您有'base_layout.html’作为基本模板
<!DOCTYPE html>
<title>Base Layout</title>
<div>
  <h1>Base</h1>
  .... // write your code here
  {% block body %}{% endblock %}
</div>然后你想要扩展'base_layout‘的'child_layout.html’。
{% include "base_layout.html" %}
  <div>
  ... // write your code here
  </div>
{% block body %}{% endblock %}现在您的页面可以只扩展'child_layout.html‘,它将同时具有base_layout.html和child_layout.html
{% extends "child_layout.html" %}
{% block body %}
  ...// write your code here
{% endblock %}发布于 2015-11-07 04:34:05
试试这个,感谢@Ixm answer为我做了这件事。
base.html
<html xmlns="http://www.w3.org/1999/xhtml">
    <body>
      {% block content %}{% endblock %}
    </body>
</html>content.html
{% extends "base.html" %}
{% block content %}
<table>
  <tr>
  {% include "footer.html" %}
  </tr>
</table>
{% endblock %}footer.html
{% block footer %} <td> test</td>{% endblock %}并使用
env = Environment(loader=FileSystemLoader(os.path.join(path, "Layouts")))
template = env.get_template('content.html')
html = template.render()
print htmlhttps://stackoverflow.com/questions/1976651
复制相似问题