Skip to main content
 首页 » 编程设计

python之在 Django 中创建可重复使用的模板

2025年05月04日29shanyou

问题 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:

虽然这有效:

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

其实应该是这样的(注意在date之前去掉了空格):

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

有了这个改变,下面的应该可以工作了:

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

问题 2:

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

{% with full_name=first_name|add:" "|add:last_name %} 
    Hi {{ full_name }} 
{% endwith %} 

一个警告:如果您对两个数字使用 add,您将得到总和,而不是串联。