众所周知(或应该),您可以使用 Django 的模板系统来呈现电子邮件正文:
def email(email, subject, template, context):
from django.core.mail import send_mail
from django.template import loader, Context
send_mail(subject, loader.get_template(template).render(Context(context)), 'from@domain.com', [email,])
我认为这有一个缺陷:要编辑电子邮件的主题和内容,您必须同时编辑视图和模板。虽然我可以证明让管理员用户访问模板是合理的,但我并没有让他们访问原始 python!
如果您可以在电子邮件中指定块并在发送电子邮件时将它们单独拉出,那将是非常酷的:
{% block subject %}This is my subject{% endblock %}
{% block plaintext %}My body{% endblock%}
{% block html %}My HTML body{% endblock%}
但是你会怎么做呢?您将如何一次只渲染一个块?