【问题标题】:Where to store email templates?在哪里存储电子邮件模板?
【发布时间】:2012-12-27 08:38:18
【问题描述】:

我正在编写一个将发送 HTML 电子邮件的 Django 1.4 应用程序。我正在使用 Django 模板来呈现电子邮件内容,但我不确定如何存储模板。

我可以将它们存储在电子邮件应用程序中(就像我存储其他模板一样),但使用静态文件感觉很愚蠢。

我考虑过创建一个电子邮件模型并将模板代码存储为 TextField,这会起作用。

我搜索了更好的解决方案,并在 reddit 上看到了sendwithus.com,这是一个绝妙的主意...

这种事情有 Django 约定吗?

【问题讨论】:

  • 为什么将模板存储为文件“愚蠢”?这就是您对所有其他模板所做的事情,为什么只对电子邮件有所不同?
  • I thought about creating an Email model and storing the template code as a TextField, which would work. 唯一可以从中获得的价值是您希望最终用户编辑模板或创建新模板;否则,将它们存储为模板文件的想法会更好。
  • @BurhanKhalid 我还可以自己更新和调整内容,而无需部署代码,这似乎是有益的。
  • 除非您正在创建类似 mailchimp.com 的东西——在现实生活中,您不会经常更新电子邮件模板;尤其是使用此类系统发送的事务性交易。
  • 明白,我同意这通常是正确的,尽管这让我想知道为什么会这样。感觉交易电子邮件是一个重要的客户接触点,应该更新和优化。

标签: django email html-email email-templates django-email


【解决方案1】:

一般方法是将电子邮件模板全局存储在项目模板文件夹或电子邮件应用程序的模板文件夹中。如果您构建一个可重用的应用程序,您可以在您的应用程序模板文件夹中提供电子邮件模板的示例,但可以通过全局项目模板覆盖它们(在 TEMPLATE_READERS 中将项目模板优先于应用程序模板,通常是 django 中的默认设置)。

我认为你的其他想法对于这么简单的事情来说太过分了。

【讨论】:

  • 带有示例的可重用电子邮件应用程序似乎是个好主意。但是您认为让这些内容在源代码之外可编辑没有任何价值?
  • 最好说它应该是可重写的/如果您在项目模板文件夹中创建电子邮件模板(遵循与电子邮件应用程序中相同的目录结构),它将简单地使用此模板而不是示例你提供了。
  • 啊,明白了。我接受这个答案作为原始问题的一个很好的、特定于 Django 的方法。但我不一定相信事务性电子邮件内容应该是硬编码的 - 请参阅有关问题的 cmets。
猜你喜欢
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
相关资源
最近更新 更多