我有一个可以在我的电脑上运行的Django网站,并在加载后在我的服务器上工作。我注意到我的服务器有Django 1.6,我升级到1.8。
重新启动后,我网站上没有任何网页加载,我收到错误:
ImportError没有名为context_processors的模块
我阅读了关于Django和allauth的文档。 Django提到在1.8中,context_processors移动了,allauth在TEMPLATE_CONTEXT_PROCESSORS
的{{1}}中不再需要特定的allauth标记。
Django:https://docs.djangoproject.com/en/1.8/ref/settings/
Allauth:https://django-allauth.readthedocs.org/en/latest/installation.html
其他人遇到这个?我是在正确的轨道上吗?我需要在设置中更改某些内容吗?我无法确定它是否是Django或allauth问题所以不确定从哪里开始。
感谢任何帮助!
回溯:
settings.py
答案 0 :(得分:48)
我遇到了同样的问题,但我从1.9.1升级到1.10。我发现这里的设置有点不同。
这是1.9.1的代码
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.core.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
这是1.10的代码
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
行django.core.context_processors.request
在1.10中无效。删除它,代码运行良好。
答案 1 :(得分:13)
问题是在升级到Django 1.8之后,我根据需要在settings.py中没有TEMPLATES设置。我不太清楚为什么它使用Django服务器在我的电脑上工作。
从allauth docs中,我将其粘贴到我的设置文件中:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Already defined Django-related contexts here
# `allauth` needs this from django
'django.template.context_processors.request',
],
},
},
]
并将旧TEMPLATE_DIRS
设置的内容复制到TEMPLATES的DIRS定义中。最终结果如下:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Already defined Django-related contexts here
# `allauth` needs this from django
'django.template.context_processors.request',
],
},
},
]
根据最近的allauth更新文档,现在需要在TEMPLATES设置中指定context_processors
,而不是TEMPLATE_CONTEXT_PROCESSORS
设置。
感谢Joey Wilhelm让我指出了正确的方向。
答案 2 :(得分:2)
只是一个提示:当回溯没有为您提供识别确切代码行所需的信息时;启用DEBUG
模式并在浏览器中打开页面会很有帮助。这是一个很棒的小local_vars
元素,你可以在回溯发生时看到局部变量状态。它可以超级方便!
(在我的情况下,它与allauth内的变化有关)
答案 3 :(得分:1)
就我而言,我必须删除settings.py中的以下行:
[...]
pushViewport(viewport(layout = grid.layout(3, 4)))
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
print(p1, vp = vplayout(1, 2:3))
print(p2, vp = vplayout(2, 1:2))
print(p3, vp = vplayout(2, 3:4))
print(p4, vp = vplayout(3, 1:2))
print(p5, vp = vplayout(3, 3:4))
我重新启动了服务器,之后我没有再看到错误。
答案 4 :(得分:0)
现在它已更新源:https://docs.djangoproject.com/en/1.11/ref/templates/upgrading/
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
# insert your TEMPLATE_DIRS here
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
# Insert your TEMPLATE_CONTEXT_PROCESSORS here or use this
# list if you haven't customized them:
'django.contrib.auth.context_processors.auth',
'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',
],
},
},
]