这是我的情况…
我正试图在django网站上的settings.py文件中动态生成一堆东西。
我正在设置多个站点(通过站点框架),我想在一个函数中插入一些值,该函数将为每个站点生成一部分设置文件。
例如:
from universal_settings import *
SITE_NAME = 'First Site'
SITE_SLUG = 'firstsite'
DEFAULT_FROM_EMAIL = '%s <noreply@otakupride.com>' % SITE_NAME
ROOT_URLCONF = 'mysite.urls.%s' % SITE_SLUG
TEMPLATE_DIRS += ( os.path.join(PROJECT_ROOT, "templates", SITE_SLUG), )
显然,对于每个运行此代码的站点,在设置文件中保留最后3行是对dry的极大违反。所以我想做这样的事
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 <noreply@otakupride.com>' % 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
关键字是它告诉编译器函数意味着操作全局变量
在它自己的文件中
-对于函数调用的文件是否有这样的内容?