因此,我要让用户为预订应用程序的电子邮件确认键入文档草稿。该草案可能会是这个样子:在django中合并用户创建的电子邮件模板中的字段
Dear [contactname], This is your booking confirmation for your vacation from [startdate] to [enddate] for a total of [numdays] days. Please click [cancellink] to cancel your booking.
电子邮件才有意义,相对于预约的对象。目前,我有需要预订对象和合并字符串,并决定做什么样的方法:
def merge_field(booking, ms):
if ms == 'contactname':
return booking.contactsheet.name
elif ms == 'startdate':
return str(booking.firstday)
elif ms == 'enddate':
return str(booking.lastday)
elif ms == 'numdays':
return str((booking.firstday - booking.lastday).days + 1)
elif ms == 'cancellink':
return '<a href="http://server.com/cancelbooking/' + str(booking.hashvalue) + '">cancel</a>'
这种硬编码的做法是很丑陋。我宁愿让用户提供一个我可以解析的字符串,并推断一些像预订对象的引用,一些算术和静态字符串(如链接中)的含义。我想像这样一个模型:
class MergeField(models.Model):
name = models.CharField(max_length=100)
formula = models.TextField()
然后用户可以设计和测试自己的合并域,并在电子邮件模板中使用它们。这将使维护更容易。但是,我不知道如何解析这个公式字段。
你有什么想法如何做到这一点?
我喜欢它。我不知道你可以这样做。我确定这正是它应该完成的方式。当我有机会开展工作时,会使这个答案成为可以接受的答案。 –
好的。祝你好运。如果您需要更多建议,请给我留言。 –
它看起来像他们建议模板()而不是get_template_from_string(),但它看起来基本相同。 https://docs.djangoproject.com/en/1.6/ref/templates/api/ –