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


这是一个失败的例子:

https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/templatetags/socialaccount.py#L20


我的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',