Như chúng ta đều biết (hoặc phải), bạn có thể sử dụng hệ thống mẫu của Django để render cơ quan email:Email khuôn mẫu trong 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)), '[email protected]', [email,])
này có một lỗ hổng trong tâm trí tôi: để chỉnh sửa các chủ đề và nội dung của một email, bạn phải chỉnh sửa cả chế độ xem và mẫu. Mặc dù tôi có thể biện minh cho người dùng quản trị quyền truy cập vào các mẫu, tôi không cấp cho họ quyền truy cập vào trăn thô!
gì sẽ thực sự mát mẻ là nếu bạn có thể chỉ định các khối trong email và kéo chúng ra riêng khi bạn gửi email:
{% block subject %}This is my subject{% endblock %}
{% block plaintext %}My body{% endblock%}
{% block html %}My HTML body{% endblock%}
Nhưng làm thế nào bạn sẽ làm điều đó? Làm thế nào bạn sẽ đi về rendering chỉ là một khối tại một thời điểm?
Vâng & * $ # tôi. Nó hoạt động. Xem xét thêm nhiều trường hơn vào cơ sở để cho phép thiết lập cài đặt từ/từ-tên/trả lời đến. – Oli
Hah, tôi đã làm điều này với ba mẫu khác nhau mà là một PITA. Xác định +1 từ tôi! –
Tôi thích nó. Tôi đã luôn luôn chỉ sử dụng các mẫu riêng biệt, mà hoạt động tốt, nhưng điều này là rất nhiều đẹp hơn để đối phó với (đặc biệt là kể từ khi bạn thường muốn cùng một bối cảnh cho tất cả các mẫu anyway). –