Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:在创建条目时向用户发送邮件_Python_Django_Email - Fatal编程技术网

Python Django:在创建条目时向用户发送邮件

Python 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

我读过一些关于这方面的问题,但没有一个适合我的情况。 我想在用户保存新条目时向他发送邮件

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 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,因此保存后将发出信号,告知其是否适用于您,如果适用,则接受答案;)谢谢,安迪,它能用:)