Django 1.8 - KeyError 'request'
Django 1.8 - KeyError 'request'
我在这里有点傻眼,希望那里有人理解这个问题!
这是上下文:
{'form': <LoginForm bound=False, valid=Unknown, fields=(password;remember;login)>,
'redirect_field_name': 'next',
'redirect_field_value': None,
'signup_url': u'/accounts/signup/',
'site': <Site: brilliantactor.com>,
u'view': <allauth.account.views.LoginView object at 0x10d7dead0>}
请求对象看起来很正常
'<WSGIRequest\npath:/accounts/login/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{\'_ga\': \'GA1.1.908939259.1424705622\',\n \'csrftoken\': \'Ga0urMmd7AgBouS9KeH5V4EQNoyE8cqU\',\n [...]
但是当读到下面一行时:
context = make_context(context, request)
输出上下文如下
[{'False': False, 'None': None, 'True': True},
{},
{'form': <LoginForm bound=False, valid=Unknown, fields=(password;remember;login)>,
'redirect_field_value': None,
'redirect_field_name': 'next',
'signup_url': u'/accounts/signup/',
'site': <Site: brilliantactor.com>,
u'view': <allauth.account.views.LoginView object at 0x10d7dead0>}]
由于新的上下文对象没有 'request' 键,一些模板标签失败,例如django-allauth
这是一个失败的例子:
我的TEMPLATE_CONTEXT_PROCESSORS:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
join(BASE_DIR, 'templates'),
# 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',
"allauth.account.context_processors.account",
"allauth.socialaccount.context_processors.socialaccount",
],
},
},
]
有人以前看过这个吗?
正如 Alex 所提示的,您需要添加 request
上下文处理器;默认情况下未激活。
'django.core.context_processors.request',
对于 1.8,添加
'django.template.context_processors.request',
而不是
'django.core.context_processors.request',
我在这里有点傻眼,希望那里有人理解这个问题!
这是上下文:
{'form': <LoginForm bound=False, valid=Unknown, fields=(password;remember;login)>,
'redirect_field_name': 'next',
'redirect_field_value': None,
'signup_url': u'/accounts/signup/',
'site': <Site: brilliantactor.com>,
u'view': <allauth.account.views.LoginView object at 0x10d7dead0>}
请求对象看起来很正常
'<WSGIRequest\npath:/accounts/login/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{\'_ga\': \'GA1.1.908939259.1424705622\',\n \'csrftoken\': \'Ga0urMmd7AgBouS9KeH5V4EQNoyE8cqU\',\n [...]
但是当读到下面一行时:
context = make_context(context, request)
输出上下文如下
[{'False': False, 'None': None, 'True': True},
{},
{'form': <LoginForm bound=False, valid=Unknown, fields=(password;remember;login)>,
'redirect_field_value': None,
'redirect_field_name': 'next',
'signup_url': u'/accounts/signup/',
'site': <Site: brilliantactor.com>,
u'view': <allauth.account.views.LoginView object at 0x10d7dead0>}]
由于新的上下文对象没有 'request' 键,一些模板标签失败,例如django-allauth
这是一个失败的例子:
我的TEMPLATE_CONTEXT_PROCESSORS:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
join(BASE_DIR, 'templates'),
# 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',
"allauth.account.context_processors.account",
"allauth.socialaccount.context_processors.socialaccount",
],
},
},
]
有人以前看过这个吗?
正如 Alex 所提示的,您需要添加 request
上下文处理器;默认情况下未激活。
'django.core.context_processors.request',
对于 1.8,添加
'django.template.context_processors.request',
而不是
'django.core.context_processors.request',