Jinja2在扩展时复制内容

时间:2014-09-10 05:11:41

标签: python google-app-engine jinja2

当index.html从base.html继承时,我遇到问题Jinja2正在复制内容。

我正在使用http://jinja.pocoo.org/docs/dev/templates/#template-inheritance中的示例代码,但浏览器中的内容完全重复。我不知道是不是因为jinja环境设置错误,扩展标签或类似的东西。

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 %}

这是我得到的(两次相同的HTML代码):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="style.css" />
<title>Index - My Webpage</title>
<style type="text/css">
    .important { color: #336699; }
</style>
</head>
<body>
<div id="content">
<h1>Index</h1>
<p class="important">
  Welcome on my awesome homepage.
</p>
</div>
<div id="footer">
&copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>.
</div>
</body>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>    
<link rel="stylesheet" href="style.css" />
<title>Index - My Webpage</title>
<style type="text/css">
    .important { color: #336699; }
</style>
</head>
<body>
<div id="content">
<h1>Index</h1>
<p class="important">
  Welcome on my awesome homepage.
</p> 
</div>
<div id="footer">

    &copy; Copyright 2008 by <a href="http://domain.invalid/">you</a>.
</div>
</body>

有什么想法吗?非常感谢。

UPDATE !!

这是我的经纪人。我正在使用webapp2。

class LandingHandler(webapp2.RequestHandler):
    def get(self):
        template = settings.JINJA_ENVIRONMENT.get_template('index.html')
        self.response.write(template.render(dict()))

更新2 !!

在我的settings.py

JINJA_ENVIRONMENT = jinja2.Environment(
    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__),'templates')),
    extensions=['jinja2.ext.autoescape'],
    autoescape=True)

1 个答案:

答案 0 :(得分:0)

关于Jinja(&Bootstrap)有点奇怪。在发出警告之前,它还会考虑html注释。因此,如果您对该文件有任何评论,可能在{% block content %} ... {% endblock %}部分中有注释,然后将其完全删除即可。