【问题标题】:Django settings: How to access variables from the settings folder in an appDjango 设置:如何从应用程序的设置文件夹中访问变量
【发布时间】:2018-12-23 00:15:22
【问题描述】:

我有一个结构如下的 Django 项目:

--|src
  --project
  --|settings
     --__init__.py
     --production.py
     --local.py
  --|app1

在我的应用程序中,我导入了设置 (from django.conf import settings),然后当我按照教程进行操作时,他们说要这样做 getattr(settings, VARIABLE)。这对我不起作用。相反,我可以这样做:settings.VARIABLE。有什么区别?

哦,我跑了type(settings),它输出了<class 'django.conf.LazySettings'>

【问题讨论】:

    标签: django django-settings django-apps


    【解决方案1】:

    项目目录 --|应用程序目录 --|settings.py

    from app.settings import API_KEY
    

    【讨论】:

      【解决方案2】:

      不同之处在于,由于各种原因(详见documentation),除非从中引用了对象,否则不会加载设置对象。

      LazySettings 对象很特殊,您必须使用settings.SOMETHING 访问它。

      之所以称为“Lazy”,是因为当您导入它时,整个对象并未加载并可供您使用。这个LazySettings 对象就像实际设置对象的代理。

      【讨论】:

      • 这回答了问题。
      【解决方案3】:

      为了访问 settings.py 文件中的变量,您可以这样做:

      例如,我在 settings.py 文件中定义了 STATIC_ROOT 变量,如下所示:

      STATIC_URL = '/static/'
      STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static', 'static_root')
      

      我可以像这样访问这个变量:

      from django.conf import settings
      document_root=settings.STATIC_ROOT
      

      【讨论】:

      • 我不明白这是怎么被接受的答案。您只是确认了他在问题中所说的话,没有解释为什么会有差异!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-23
      • 2013-05-21
      • 2012-05-23
      • 2014-09-15
      • 2019-02-09
      相关资源
      最近更新 更多