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

时间:2009-07-23 15:00:35

标签: python django import circular-reference

我正在开发一个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 内, get_current()来自网站应用,而网站应用依次导入 models.py ,其导入 globals.py 也是。

修改

应用程序运行完美,没有遇到此循环导入问题。从shell导入 globals.py 不会带来任何问题。即使命令也可以从shell执行而无需调用 manage.py

那么为什么 manage.py some_command 因循环导入而失败?

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

根据the docs,站点对象在您第一次访问时被缓存,因此导入并直接使用它不会有任何损害。