首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jinja2中的多级模板继承?

Jinja2中的多级模板继承?
EN

Stack Overflow用户
提问于 2009-12-30 04:03:42
回答 8查看 40.4K关注 0票数 40

我的职业是html/css,我一直作为模板设计师在django项目中工作。我目前在一个使用Jinja2的网站上工作,我已经使用了大约两个星期。通过阅读文档,我发现Jinja2不支持多级模板继承,因为您不能做多个级别的模板继承

代码语言:javascript
复制
{% extends "foo" %}

每次渲染。现在我确信你可以在Django中做到这一点,Django非常强大,因为你可以指定一个基本模板,在此基础上指定3个或4个模板,然后使用这些基本模板构建页面的主要部分。继承的目的不是为了让你有更多的能力来抽象,所以你只需要处理唯一的代码吗?

在任何情况下,我都不知道在这里做什么。我不知道是否有什么方法可以像使用Django模板一样好用。我不是Django或Jinja(2)的专家,但我可以提供所需的任何信息。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-12-30 09:05:53

从文档的表述方式来看,它似乎不支持深度继承(n)级别。

与Python Jinja不同,

不支持多重继承。所以你只能有一个叫做每次渲染的扩展标签。

我不知道这只是一条规则,说每个模板1个扩展....我现在知道了,在jinja频道的帮助下。

票数 33
EN

Stack Overflow用户

发布于 2013-05-22 15:05:34

使用jinja2实现多层次模板的最佳方法之一是使用'include‘,假设您有'base_layout.html’作为基本模板

代码语言:javascript
复制
<!DOCTYPE html>
<title>Base Layout</title>
<div>
  <h1>Base</h1>
  .... // write your code here
  {% block body %}{% endblock %}
</div>

然后你想要扩展'base_layout‘的'child_layout.html’。

代码语言:javascript
复制
{% include "base_layout.html" %}
  <div>
  ... // write your code here
  </div>
{% block body %}{% endblock %}

现在您的页面可以只扩展'child_layout.html‘,它将同时具有base_layout.htmlchild_layout.html

代码语言:javascript
复制
{% extends "child_layout.html" %}
{% block body %}
  ...// write your code here
{% endblock %}
票数 40
EN

Stack Overflow用户

发布于 2015-11-07 04:34:05

试试这个,感谢@Ixm answer为我做了这件事。

base.html

代码语言:javascript
复制
<html xmlns="http://www.w3.org/1999/xhtml">
    <body>
      {% block content %}{% endblock %}
    </body>
</html>

content.html

代码语言:javascript
复制
{% extends "base.html" %}
{% block content %}
<table>
  <tr>
  {% include "footer.html" %}
  </tr>
</table>
{% endblock %}

footer.html

代码语言:javascript
复制
{% block footer %} <td> test</td>{% endblock %}

并使用

代码语言:javascript
复制
env = Environment(loader=FileSystemLoader(os.path.join(path, "Layouts")))
template = env.get_template('content.html')
html = template.render()
print html
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1976651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档