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
添加回答
舉報