2 回答
TA贡献1829条经验 获得超7个赞
循环导入的一个非常常见且当然最简单的解决方案是推迟导入,直到您真正需要它们为止。例如,改变
import settings
def func():
settings.things
到
def func():
import settings
settings.things
如果您绝对必须具有模块全局导入,则可以使用各种技巧,例如
settings = None
def import_stuff():
global settings
import settings as s
settings = s
或者上课
class Settings():
mod = None
def __getattr__(self, attr):
if self.mod is None:
import settings
self.mod = settings
return getattr(self.mod, attr)
settings = Settings()
TA贡献1830条经验 获得超3个赞
代替:
settings_env = os.environ.get('PROJECT_SETTINGS', '')
if settings_env == 'prod':
from .prod import *
elif settings_env == 'dev':
from .dev import *
你可以只导出一个变量:
DJANGO_SETTINGS_MODULE your_project.settings.dev2
Django 将读取正确的文件。
另外:代替
import settings
你想使用:
from django.conf import settings
及以上可以嵌套在方法/函数中以避免循环导入。
请参阅:https : //docs.djangoproject.com/en/dev/topics/settings/#using-settings-in-python-code
请参阅:https : //docs.djangoproject.com/en/dev/topics/settings/#custom-default-settings
添加回答
举报