这是我的情况...我可以访问本地作用域的__dict__对象吗?
我想在django网站的settings.py文件中动态生成一堆东西。
我设置了几个站点(通过站点框架),我想要插入一些值,以便为每个站点生成一部分设置文件。
例如:
from universal_settings import *
SITE_NAME = 'First Site'
SITE_SLUG = 'firstsite'
DEFAULT_FROM_EMAIL = '%s <[email protected]>' % SITE_NAME
ROOT_URLCONF = 'mysite.urls.%s' % SITE_SLUG
TEMPLATE_DIRS += (os.path.join(PROJECT_ROOT, "templates", SITE_SLUG),)
显然是干一个巨大的冲突有那些最后3行中的设置文件运行此代码每一个网站。所以我想这样做
from universal_settings import *
from utils import get_dynamic_settings
SITE_NAME = 'First Site'
SITE_SLUG = 'firstsite'
get_dynamic_settings(locals())
这里是功能
# WARNING: THIS CODE DOES NOT WORK!
def get_dynamic_settings(context_dict):
global DEFAULT_FROM_EMAIL
global ROOT_URLCONF
global TEMPLATE_DIRS
DEFAULT_FROM_EMAIL = '%s <[email protected]>' % context_dict['SITE_NAME']
ROOT_URLCONF = 'mysite.urls.%s' % context_dict['SITE_SLUG']
TEMPLATE_DIRS += (os.path.join(PROJECT_ROOT, "templates", context_dict['SITE_SLUG']),)
所以我的问题是...我怎么添加东西的设置文件的范围是什么?它似乎没有一个对象可用于其中的变量。
也许我正在谈论这一切都是错误的?谢谢你的帮助!
PS - 我的global
关键字的理解是,它告诉功能装置来操作它自己的文件内的全局变量编译器 - 是有文件这样的事情该函数被调用?
我在想那个,但是我想对它使用setattr ......我想那是我的愚蠢。感谢这比我试图做的更好:) – Jiaaro 2009-10-31 20:57:15
其实,本地人()的文档说:“警告:该字典的内容不应该被修改;更改可能不会影响本地变量的值使用翻译“。 – 2009-10-31 21:17:54