我正在开发一个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()强调>来自网站应用,而网站应用依次导入 models.py ,其导入 globals.py 也是。
修改
应用程序运行完美,没有遇到此循环导入问题。从shell导入 globals.py 不会带来任何问题。即使命令也可以从shell执行而无需调用 manage.py 。
那么为什么 manage.py some_command 因循环导入而失败?
提前致谢。
答案 0 :(得分:1)
是否有任何特殊原因需要在globals.py中存储SITE_DOMAIN和SITE_NAME?这些已经直接从站点框架中获得。
根据the docs,站点对象在您第一次访问时被缓存,因此导入并直接使用它不会有任何损害。