Python Django:在创建条目时向用户发送邮件
我读过一些关于这方面的问题,但没有一个适合我的情况。 我想在用户保存新条目时向他发送邮件 post/models.pyPython Django:在创建条目时向用户发送邮件,python,django,email,Python,Django,Email,我读过一些关于这方面的问题,但没有一个适合我的情况。 我想在用户保存新条目时向他发送邮件 post/models.py from django.db import models from django.utils import timezone from django.contrib.auth.models import User from django.db.models.signals import post_save from django.core.mail import EmailMu
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.core.mail import EmailMultiAlternatives
from django.template.loader import render_to_string
from django.dispatch import receiver
class Post(models.Model):
client = models.ForeignKey(User)
date = models.DateTimeField(blank=True, editable=False)
@receiver(post_save, sender=User)
def first_mail(sender, instance, **kwargs):
if kwargs['created']:
user_email = instance.User.email
subject, from_email, to = 'New Post', 'from@example.com', user_email
text_content = render_to_string('post/mail_post.txt')
html_content = render_to_string('post/mail_post.html')
# create the email, and attach the HTML version as well.
msg = EmailMultiAlternatives(subject, text_content, from_email, [to])
msg.attach_alternative(html_content, "text/html")
msg.send()
此信号不发送任何电子邮件。我正在使用邮件面板跟踪电子邮件。参考django文档: sender-模型类 所以,如果您正在保存类Post的对象,那么信号发送者是Post而不是用户 然后在signal中,您引用
实例
(它是类Post
的对象),并访问其字段客户端
(FK链接,类用户
)并获取其字段电子邮件
适当形式:
user_email = instance.client.email
假设课堂上有一个“用户”字段与电子邮件一起出现。
实例.User.email
是否正确?顺便说一句,发送信号的人不应该在“用户”上,而应该在“用户”上发布。。。已更改、保存的对象属于类Post,因此保存后将发出信号,告知其是否适用于您,如果适用,则接受答案;)谢谢,安迪,它能用:)