django - 执行命令时出现循环导入问题

3 投票
1 回答
1181 浏览
提问于 2025-04-15 13:06

我正在开发一个Django应用程序。下面是与我问题相关的重要模块:

globals.py --> 这个文件里包含了在整个应用中使用的常量。SITE_NAMESITE_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 里呢?这些信息其实已经可以直接从网站框架中获取了。

根据 文档 的说法,第一次访问网站对象时,它会被缓存起来,所以直接导入并使用它是没问题的。

撰写回答