【问题标题】:add variables in settings to be used in views - Django在设置中添加要在视图中使用的变量 - Django
【发布时间】:2016-07-30 14:35:52
【问题描述】:
def get(self , request , format=None):
    body = request.data
    name = body.get('name',"The_Flash")

在这种情况下,如果 request.data 没有收到 name 的值,我将值 The_Flash 硬编码,但我知道这不是一种合理的方式。我希望将其作为变量添加到我的 django 项目的 settings.py 文件中。我浏览了来自 SO 的参考资料,例如 this 和其他一些人,但这不是我想要的。有人可以告诉我哪种方法最可靠。我正在使用 Django 1.8。

【问题讨论】:

  • 你能解释一下为什么你认为这不是一个“合理的方式”吗?这种方法不是比访问常量更具可读性吗?
  • 硬编码不是正确的方法。这可能不是我需要它的唯一实例。如果我保持硬编码,如果我想更改该硬编码值,我将不得不从每个实例中更改,如果我正在处理大量此类实例,这可能是不可行的。

标签: python django django-settings


【解决方案1】:

我们倾向于将设置变量存储在应用程序中名为 app_settings.py 的模块中,并使用它来设置设置的默认值并允许用户在 Django 的 settings.py 中覆盖它们:

# app_settings.py
from django.conf import settings

MY_SETTING = getattr(settings, 'APP_NAME_MY_SETTING', 'the_default_value')

然后在你的视图中导入它并使用它:

# views.py
from app_settings import MY_SETTING

并且用户可以在他们的项目设置中覆盖它:

# project's settings.py
APP_NAME_MY_SETTING = 'something else'

这允许您在每次部署等时更改它。

【讨论】:

    【解决方案2】:

    您可以将常量存储在单独的文件中并将其导入您的项目中

    文件夹/

    appconfigurations.py
    views.py
    

    appconfigurations.py

    YOUR_CONSTANT = "constant_value"
    

    views.py

    from appconfigurations import *
    
    def your_view(request):
        constant = YOUR_CONSTANT
    

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 2013-09-13
      • 2014-11-21
      • 2011-03-04
      • 2016-05-09
      • 1970-01-01
      • 2019-06-09
      • 2012-08-01
      • 2017-03-04
      相关资源
      最近更新 更多