在Django中创建可恢复的模板

时间:2015-06-19 22:02:36

标签: python django templates

问题1:

所以我正在为Django中的电子邮件模板工作。我的电子邮件中有一个表格,我需要将格式放入表格的每一行,因为有些电子邮件客户端要求所有CSS样式都是内联的。所以我创建了一个模板来实现表格行,并且我每行都用with调用它。

行模板

<tr style="blahblah">
   <td>{{ description}}</td>
   <td>{{ value}}</td>
</tr>

然后我可以像这样调用模板

{% include 'included_template.html description=some_context_var value=some_other_var %}

一切都是正确的,直到我需要一个上下文变量以外的东西进入其中一个表格单元格。在我的例子中,我需要以日期格式重新格式化DateTimeField,如下所示:

{{ create_date| date:"N j, Y" }}

上述工作正常,但当我这样做时:

 {% include "included_template.html" with description="Date:" value=create_date| date:"N j, Y"  %}

我收到错误:

django.template.base.TemplateSyntaxError: Could not parse the remainder: '|' from 'invoice.create_date|'

问题2:

我还有一些情况,我想在其中一个单元格中组合多个值,例如:

Hi {{first_name}} {{last_name}}

有什么方法可以回复父模板来渲染一个正文,或者在模板中组合我需要的变量来传递给包含的模板?我可以将所有这些内容添加到上下文中,但它并不适合我,特别是因为我需要的日期格式函数似乎在python端不可用。

1 个答案:

答案 0 :(得分:1)

问题1:

虽然这有效:

user.activated

实际应该是这样的(请注意,{{ create_date| date:"N j, Y" }} 之前已删除空格):

date

通过此更改,以下内容现在可以正常工作:

{{ create_date|date:"N j, Y" }}

问题2:

您可以使用Django的built-in template tags

 {% include "included_template.html" with description="Date:" value=create_date|date:"N j, Y"  %}

一个警告:如果你对两个号码使用{% with full_name=first_name|add:" "|add:last_name %} Hi {{ full_name }} {% endwith %} ,你将获得总和,而不是连接。