【发布时间】:2013-04-21 17:24:15
【问题描述】:
我正在编写可重用的 Django 应用程序。将自己的设置添加到 settings.py 的最佳做法是什么?我是否需要在每个设置前面加上我的 app_name,或者我应该只做一个设置字典。为我的应用?
【问题讨论】:
标签: python django coding-style django-apps
我正在编写可重用的 Django 应用程序。将自己的设置添加到 settings.py 的最佳做法是什么?我是否需要在每个设置前面加上我的 app_name,或者我应该只做一个设置字典。为我的应用?
【问题讨论】:
标签: python django coding-style django-apps
您应该尝试仅在所涉及的包中定义应用设置,尤其是在您考虑使用可重复使用的包时。坚持使用唯一的全局名称(实际上是哪些设置)总是一个好主意。看看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'
大多数包确实按照你的建议使用包名作为前缀,这里有几个例子:
【讨论】: