【问题标题】:Django - import constants's variable from variableDjango - 从变量中导入常量的变量
【发布时间】:2023-03-06 21:13:01
【问题描述】:

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

VAR1='myapp'
VAR2='MYCONSTANT'

我想使用变量导入它。

from VAR1.constants import VAR2

,但它当然不起作用。

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


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

【问题讨论】:

标签: python-3.x django python-import


【解决方案1】:

它能解决你的问题吗?

  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)

【讨论】:

    【解决方案2】:

    您可以使用您想要的名称创建一个新应用,例如 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 放在 constants.py 中,例如:

    VAR1='myapp'
    VAR2='MYCONSTANT'
    

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

    from APP_NAME.constants import VAR2
    

    【讨论】:

    • INSTAllED_APPS中放入APP_NAME时,必须用引号括起来,即应该是一个字符串
    • 是的……当然。感谢您指出这一点。
    • 我不清楚我的问题,但我在那里放了一些额外的信息(在 ``-----'' 下方)
    • 也就是说,你可以在下面的APP_NAME处追加。 this(....) 表示还有其他内容。
    • 如果我使用 from myapp.constants import MYCONSTANT,那就行了。设置不是问题。问题是我不知道模型的名称和需要导入的变量的名称,这就是它们存储在变量中的原因。
    猜你喜欢
    • 1970-01-01
    • 2023-02-17
    • 2015-06-10
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    相关资源
    最近更新 更多