【问题标题】:settings namespace in DjangoDjango中的设置命名空间
【发布时间】:2013-04-21 17:24:15
【问题描述】:

我正在编写可重用的 Django 应用程序。将自己的设置添加到 settings.py 的最佳做法是什么?我是否需要在每个设置前面加上我的 app_name,或者我应该只做一个设置字典。为我的应用?

【问题讨论】:

    标签: python django coding-style django-apps


    【解决方案1】:

    您应该尝试仅在所涉及的包中定义应用设置,尤其是在您考虑使用可重复使用的包时。坚持使用唯一的全局名称(实际上是哪些设置)总是一个好主意。看看PEP-8 globals

    如果您要创建可重用包,最好先尝试从设置模块导入属性,以查看用户是否使用自己的常量覆盖它。

    例如

    from django.conf import settings
    
    MY_CONSTANT = getattr(settings, 'MY_CONSTANT', True)
    
    def foo(*args, **kwargs):
        if MY_CONSTANT:
            return 'hello'
        else:
            return 'goodbye'
    

    这样用户可以在他的设置模块中设置MY_CONSTANT = False,这样应用就会返回'goodbye'而不是默认的'hello'

    大多数包确实按照你的建议使用包名作为前缀,这里有几个例子:

    FEINCMS, tastypie

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2014-09-18
      • 2023-03-05
      • 2014-12-31
      • 2013-11-09
      • 1970-01-01
      相关资源
      最近更新 更多