Trong dự án của tôi, tôi đã thêm nguồn cấp tin tức. Nhưng khi cố gắng gửi email với chức năng này:Gửi email HTML bằng django
def send(request):
template_html = 'static/newsletter.html'
template_text = 'static/newsletter.txt'
newsletters = Newsletter.objects.filter(sent=False)
subject = _(u"Newsletter")
adr = NewsletterEmails.objects.all()
for a in adr:
for n in newsletters:
to = a.email
from_email = settings.DEFAULT_FROM_EMAIL
subject = _(u"Newsletter Fandrive")
text = get_template(template_text)
html = get_template(template_html)
d = { 'n': n,'email': to }
text_content = text.render(d)
html_content = html.render(d)
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
sử dụng những mẫu:
//text
=================== Newsletter - {{ n.date }} ============
==========================================================
{{ n.title }}
==========================================================
{{ n.text }}
==========================================================
//html
<html>
<head>
</head>
<body>
<div style="">
<div style="">
<h1 style="">{{ n.title }} - {{n.date}}</h1>
<p style="">
{{ n.text }}
</p>
</div>
</div>
</body>
</html>
và các mô hình:
class Newsletter(models.Model):
title = models.CharField("title", blank=False, max_length=50)
text = models.TextField("text", blank=False)
sent = models.BooleanField("sent", default=False)
data = models.DateTimeField("creation date", auto_now_add=True, blank=False)
class NewsletterEmails(models.Model):
email = models.EmailField(_(u"e-mail address"),)
tôi nhận được:
TemplateSyntaxError at /utils/newsletter_send/
Caught an exception while rendering: 'dict' object has no attribute 'autoescape'
trong {{}} n.date trong text_email mẫu
Mặc dù debug của tôi cho thấy tôi gửi bản tin đúng đối tượng vào mẫu, cũng như gỡ lỗi ngữ cảnh:
context {'email': u'[email protected]', 'n': <Newsletter: Newsletter object>}
Tại sao điều đó xảy ra? Từ những gì tôi đã tìm thấy về lỗi này bằng cách nào đó kết nối để gửi từ điển trống đến trình kết xuất mẫu, nhưng không phải của tôi ...
trong mô hình trường ngày định nghĩa của bạn được đặt tên là 'dữ liệu', đó là một lỗi đánh máy trong khi đăng câu hỏi hoặc bạn có nó như thế trong mã cũng ?? – Ashok
typo, đó là ngày ở mọi nơi. Dunno làm thế nào điều này có thể đã xảy ra mặc dù ... :) – crivateos
trong #django bản ghi tôi đã đọc 'Bạn đang đi qua một từ điển để một cái gì đó đã được mong đợi một đối tượng bối cảnh.' . Làm thế nào để giải quyết điều này? – crivateos