django - 执行命令时出现循环导入问题
我正在开发一个Django应用程序。下面是与我问题相关的重要模块:
globals.py --> 这个文件里包含了在整个应用中使用的常量。SITE_NAME
和 SITE_DOMAIN
就是其中两个常量,用来填充一些字符串。以下是我定义它们的方式:
from django.contrib.sites.models import Site
...
SITE_DOMAIN = Site.objects.get_current().domain
SITE_NAME = Site.objects.get_current().name
models.py --> 这个模块里存放着模型。它从 globals.py 导入了一些常量。
some_command.py --> 这是一个命令,也从 globals.py 导入了一些常量。
当这个命令执行时,它从 globals.py 导入一个常量,但遇到了循环导入的问题:在 globals.py 中调用了 sites 应用的 get_current(),而 sites 应用又导入了 models.py,而 models.py 里也有从 globals.py 的导入。
编辑:
这个应用运行得非常顺利,没有遇到循环导入的问题。从命令行导入 globals.py 也没有问题。甚至这个命令可以直接从命令行执行,而不需要调用 manage.py。
那么,为什么 manage.py some_command 会因为循环导入而失败呢?
提前谢谢你。
1 个回答
1
你为什么需要把 SITE_DOMAIN 和 SITE_NAME 存在 globals.py 里呢?这些信息其实已经可以直接从网站框架中获取了。
根据 文档 的说法,第一次访问网站对象时,它会被缓存起来,所以直接导入并使用它是没问题的。