【发布时间】:2015-03-17 09:19:09
【问题描述】:
我正在尝试编写一个包含三个部分的电子邮件 html 文件:页眉、正文和页脚。它们被包装在一个主 mail.html 文件中,如下所示:
<html>
<body>
<p>
<table border="0" cellpadding="0" cellspacing="0" style="font-size: 12.727272033691406px; line-height: 1.2em; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; border-spacing: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; background-color: rgb(231, 232, 232); border-top-style: solid; border-top-color: rgb(221, 221, 221);" width="100%">
<tbody>
<tr>
<td align="center" style="font-family: arial, sans-serif; margin: 0px;" width="100%">
{% block head %}
{% endblock %}
{% block body %}
{% endblock %}
<br/>
{% block footer %}
{% endblock %}
</td>
</tr>
</tbody>
</table>
</p>
</body>
</html>
本质上是一个父模板和三个子模板,都在同一个目录中。子模板在以下两个标签之间进行了描述:
{% extends "mail.html" %}
{% block head %}
...
{% endblock %}
当我运行以下命令时:
from jinja2 import Environment, PackageLoader
env = Environment(loader = PackageLoader('mailwrapper','mail_templates'))
template = env.get_template('mail.html')
template.render()
我只得到带有mail.html 的html 的输出,但是子块被忽略并且只打印出空行。我在这里做错了什么?
【问题讨论】:
-
这是完整的代码吗?您的
email_header块未在 mail.html 中定义。 -
对不起,它应该是 'head' 而不是 'email_header'。更新了它。 'head' 块已在名为 email_header.html 的文件中定义,该文件与 mail.html 位于同一目录中
-
您应该 1) 在 mail.html 中包含 3 个文件而不是使用块,或者 2) 在扩展 mail.html 的单个文件中定义所有 3 个块并加载该模板
-
@VarunJain 如果您觉得答案有帮助,请将其标记为已接受;)