【问题标题】:django signals do not send maildjango 信号不发送邮件
【发布时间】:2020-08-17 02:20:22
【问题描述】:

我有一个博客,我想在我发布新帖子时将我的订阅发送电子邮件。我使用了 django 信号。我的问题是信号不起作用。当我尝试 django shell 时,我可以发送邮件。

这是我的 signals.py 文件:

from django.db.models.signals import post_save
from blog.models import Blog
from django.core.mail import send_mail
from django.dispatch import receiver

@receiver(post_save, sender=Blog)
def new_post_created(sender,**kwargs)
    print "Success"
    mysubject = "E mail gönderiyorum"
    mymessage = "Merhaba, \nYeni yazım az önce yayınlandı. Hemen okumak için linki kullanabilirsin.\n http://www.cemreacar.com/blog/"
    mymail = "mail@cemreacar.com"
    send_mail(mysubject,mymessage,mymail,['*****@gmail.com'],'fail_silently=False')

【问题讨论】:

  • 您的控制台打印“成功”吗?
  • 您是否填写了apps.py 并将您的信号文件导入到AppModel 中,就像那篇帖子中一样? stackoverflow.com/a/56134874/8548036
  • @ncopiy 当我尝试时,settings.py 抛出错误。
  • @cmracar 哪个错误?显示痕迹
  • @ncopiy 线程 django-main-thread 中的异常:...apps.populate(settings.INSTALLED_APPS) 文件 "/home/ubuntu/env/lib/python3.8/site-packages/django /apps/registry.py",第 93 行,在填充 raise ImproperlyConfigured(django.core.exceptions.ImproperlyConfigured:应用程序标签不是唯一的,重复:博客

标签: django django-signals


【解决方案1】:

你是否重写了 ready 方法?如果没有,您必须覆盖应用程序配置类的 ready 方法。

在apps.py 中会定义应用配置类。重写ready方法如下

from django.apps import AppConfig
class YourAppConfig(AppConfig):
    name = 'your_app'

    def ready(self):
        import your_app.signal

在项目settings.py中更新安装的应用如下:

替换

INSTALLED_APPS = (
    '...',
    'your_app',
)

INSTALLED_APPS = (
    '...',
    'your_app.apps.YourAppConfig',
)

文档链接 - https://docs.djangoproject.com/en/3.0/ref/applications/#django.apps.AppConfig.ready

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2019-10-31
    • 2015-09-21
    • 1970-01-01
    • 2015-12-10
    • 2011-03-02
    相关资源
    最近更新 更多