因此,我要讓用戶爲預訂應用程序的電子郵件確認鍵入文檔草稿。該草案可能會是這個樣子:在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/ –