jinja2 模板继承示例不起作用

Posted

技术标签:

【中文标题】jinja2 模板继承示例不起作用【英文标题】:jinja2 template inheritance sample does not work 【发布时间】:2012-11-29 17:13:19 【问题描述】:

有人成功尝试过 jinja2 模板继承吗?该示例对我来说只是部分工作。

base.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    % block head %
    <link rel="stylesheet" href="style.css" />
    <title>% block title %% endblock % - My Webpage</title>
    % endblock %
</head>
<body>
    <div id="content">% block content %% endblock %</div>
    <div id="footer">
        % block footer %
        &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>.
        % endblock %
    </div>
</body>

index.html(子模板)

% extends "base.html" %
% block title %Index% endblock %
% block head %
     super() 
    <style type="text/css">
        .important  color: #336699; 
    </style>
% endblock %
% block content %
    <h1>Index</h1>
    <p class="important">
      Welcome on my awesome homepage.
    </p>
% endblock %

我的输出

我的问题: 1.页面标题为“索引”。它应该是“索引 - 我的页面” 2.没有页脚

请帮忙!!!! 供参考:我使用的是最新的谷歌应用引擎,python 2.7,IDE 是 Visual Studio 2012 + Python for Visual Studio,KAY framework(从 django 和 jinja2 扩展)

views.py

def index(request):
    return render_to_response('myapp/index.html')

【问题讨论】:

你能在 Python 代码中显示渲染步骤吗? 您好,我刚刚根据 jinja2 文档中的样本修改了我的问题,因为没有人回答我之前的问题。能否请你帮忙?谢谢!!! 仍然没有 Python 代码。由于您使用的是另一个框架,因此这一点更加相关。 Python 代码已添加。但在 python 代码中没有什么特别之处。 我没有发现任何明显的错误。你可能有两个版本的 base.html 吗?我知道 jinja 会查看多个模板目录(如果这样定义)并选择它找到的第一个。 【参考方案1】:

Jinja2 继承自您的 TEMPLATE_DIRS 设置。我假设您的路径不正确。试试:

% extends "myapp/base.html" %

【讨论】:

你是对的。我只是想知道为什么???我将 base.html 和 index.html 放在同一个文件夹中。为什么我需要 myapp/base.html

以上是关于jinja2 模板继承示例不起作用的主要内容,如果未能解决你的问题,请参考以下文章

模板继承不起作用 - Django 教程

Jinja / Django for 循环范围不起作用

python-django模板继承在引用基中的多个块时不起作用

python-django模板继承在引用base中的多个块时不起作用

在 Ansible 上使用 Jinja2 的 if 表达式(内联 if-else)中的连接不起作用

JavaScript 片段在 Django 模板中不起作用