如何在我的 Sendgrid 事务模板中包含 Jinja2 模板
Posted
技术标签:
【中文标题】如何在我的 Sendgrid 事务模板中包含 Jinja2 模板【英文标题】:How to include Jinja2 templating in my Sendgrid Transactional Template 【发布时间】:2020-04-07 13:27:13 【问题描述】:有没有办法在 Sendgrid 模板中包含 jinja2 模板?
我试图在 Sendgrid 模板中使用 % for %
和 % endfor %
但它似乎不起作用。虽然电子邮件发送成功,但我打开它时它是空的。
html 代码(placeorder.html):
<body>
<h3>From: name</h3>
<h3>Email: emailFrom</h3>
<table id="customers">
<tr>
<th>Product</th>
<th>Quantity</th>
<th>Sub Total</th>
</tr>
% for order_item in order.items.all %
<tr>
<td> order_item.item.title</td>
<td> order_item.quantity </td>
<td>₦ order_item.get_final_price </td>
</tr>
% endfor %
<p>
<span>Total ₦</span>
<strong> order.get_total </strong>
</p>
</table>
</body>
Views.py(Django)
def placeorder(request):
form = orderform(request.POST)
try:
order = Order.objects.get(user=request.user, ordered=False)
if form.is_valid():
order = Order.objects.get(user=request.user, ordered=False)
name = form.cleaned_data['name']
emailFrom = form.cleaned_data['email']
emailTo = settings.DEFAULT_FROM_EMAIL
message = Mail(
from_email=emailFrom,
to_emails= emailTo ,
subject='subject',
html_content= settings.BASE_DIR + "/templates/placeorder.html")
message.dynamic_template_data =
'name': name,
'email': emailFrom ,
message.template_id = '********************************'
try:
sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
messages.success(request, "Thanks, We received your Order message. We will get back to you!.")
OrderItem.delete(order)
except Exception as e:
messages.warning(request, "Sorry, Order message not sent.Please Try Again!.")
return render(request, "checkout.html", context)
【问题讨论】:
【参考方案1】:您可以在动态模板中使用Handlebars.js 语法。
这里是 Sendgrid 中the documentation 的链接。
【讨论】:
以上是关于如何在我的 Sendgrid 事务模板中包含 Jinja2 模板的主要内容,如果未能解决你的问题,请参考以下文章
在我的 django 模板中包含 CSS 和 Javascript [重复]