Skip to main content
 首页 » 编程设计

python之django之执行命令时的循环导入问题

2025年05月04日25zengkefu

我正在开发一个 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 内部,get_current() 从 sites 应用程序被调用,sites 应用程序依次导入 models.py,它从 globals.py 也是。

编辑:

应用程序运行完美,没有遇到这种循环导入问题。从 shell 导入 globals.py 没有问题。即使命令也可以在不调用 ma​​nage.py 的情况下从 shell 执行。

那么为什么 ma​​nage.py some_command 会因为循环导入而失败?

提前致谢。

请您参考如下方法:

是否有任何特殊原因需要将 SITE_DOMAIN 和 SITE_NAME 存储在 globals.py 中?这些已经可以直接从网站框架获得。

根据 the docs , 站点对象在您第一次访问它时被缓存,因此导入它并在那里直接使用它不会造成伤害。