Django - 从变量导入常量变量

Django - import constants's variable from variable

我有一个 Django 应用程序,我想以 myapp 和 MYCONSTANT 存储在变量中的方式从 myapp.constants 导入 MYCONSTANT 变量:

VAR1='myapp'
VAR2='MYCONSTANT'

并且我想使用变量导入它。

from VAR1.constants import VAR2

,当然不行。

我怎样才能做到这一点?有没有类似的方法来使用 apps.get_model() ?


我需要使用 VAR1 和 VAR2 变量,因为我不知道它们,它们来自其他地方。比方说,它们是函数的参数。我可能可以用 exec 解决它,但我真的想避免使用 exec。

您可以使用您想要的名称创建一个新应用,例如 APP_NAME:

$ python manage.py startapp APP_NAME

在设置中注册应用程序:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',

    'APP_NAME',      # Append to the bottom
]

在您的 APP_NAME 模块中创建一个新的 constants.py 文件。将你的 常量 放在 constants.py 中 Like:

VAR1='myapp'
VAR2='MYCONSTANT'

现在,您可以通过导入访问 VAR2

from APP_NAME.constants import VAR2

它能解决您的问题吗?

  def get_constant_value(module_name, constant):
      try:
           module = importlib.import_module(f'{module_name}.constants')
      except Exception as e:
           raise e
      return getattr(module, constant)

 constant_value = get_constant_value(VAR1, VAR2)