我有一个上下文处理器,可以在模板中使用常量,包括基本模板。
在我的vagrant开发服务器上,使用runserver,这些工作正常。生产服务器使用apache和WSGI。
我在开发和制作上都使用了Django 1.9.4。
这是context_processors.py
from .constants import *
def template_constants(request):
return {'collection_name': COLLECTION_NAME,
'website_name': WEBSITE_NAME,}
这是来自settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.template.context_processors.request',
'django.template.context_processors.debug',
'django.template.context_processors.i18n',
'django.template.context_processors.media',
'django.template.context_processors.static',
'django.template.context_processors.tz',
'django.contrib.messages.context_processors.messages',
'myapp.photos.context_processors.template_constants',
],
},
},
]
常量只在我的应用程序中的constants.py文件中,我将其导入到使用它们的文件中。该文件包含以下行:
WEBSITE_NAME = "website name"
我的观点使用渲染,应该包括RequestContext
return render(request, 'page.html', template_variables)
我没有收到任何错误消息,变量只是在生产模板中没有值,所以没有显示任何内容。
除了部署之外,生产和开发的代码完全相同。
我尝试过的事情: - 将字符串值直接添加到context_processors.py文件中(消除它是从constants.py导入变量的潜在问题) - 回到Django 1.8和1.7以检查它是否与特定版本相关
这些变化都没有任何区别。