Django& Heroku:仅在DEBUG = False&在heroku上

时间:2013-05-23 00:56:36

标签: python django heroku

我最近安装了django-notification-1,see code here if necessary。当我在我的本地开发服务器上使用DEBUG = True或DEBUG = False运行我的应用程序时,一切正常。在带有DEBUG = True的heroku上,一切都很好,但是当DEBUG = False时,我会收到模块' notification"的导入错误。不存在。

这是我的核心应用程序中发生导入错误的models.py文件。我使用此文件的唯一方法是处理来自所有其他应用程序的信号和通知。我在第一个def之后截断了文件:

from django.contrib.auth.models import User
from django.contrib.comments.models import Comment
from django.db.models.signals import post_save
from follow.signals import followed
from django.contrib.comments.signals import comment_was_posted, comment_was_flagged

from django.contrib.sites.models import Site
from django.conf import settings
from django.dispatch import receiver
from django.template import Context

from notification import models as notification


@receiver(followed, sender=User, dispatch_uid='follow.user')
def user_follow_handler(user, target, instance, **kwargs):

    if user != target:
        notification.send([target], "followed", {"from_user": user}, sender=user)

导入在以下行失败:

from notification import models as notification

我已经通过将导入放在函数中来临时修复它,然后它甚至在DEBUG = False时起作用:

@receiver(followed, sender=User, dispatch_uid='follow.user')
def user_follow_handler(user, target, instance, **kwargs):
    from notification import models as notification 
    if user != target:
        notification.send([target], "followed", {"from_user": user}, sender=user)

显然,在加载通知应用程序之前会调用导入。但是为什么它仅在具有DEBUG = False的heroku上才是问题。如果我在heroku上设置DEBUG = True一切正常,并且无论哪种方式都适用于models.py runserver。

问题是:什么会导致导入行为根据heroku上的DEBUG状态而不是我的开发服务器进行更改?更重要的是,为什么DEBUG会对此产生影响?

0 个答案:

没有答案