Django 1.8 - KeyError'请求'

时间:2015-03-27 12:37:26

标签: python django django-templates django-allauth django-1.8

我在这里有点傻眼,希望有人明白这个问题!

这是上下文:

{'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>}]

由于新的上下文对象没有&#39;请求&#39;密钥,一些模板标签失败,例如的的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",
            ],
        },
    },
]

有没有人见过这个?

2 个答案:

答案 0 :(得分:5)

对于1.8,添加

get_data

而不是

'django.template.context_processors.request',

答案 1 :(得分:2)

正如Alex暗示的那样,您需要添加request上下文处理器;它默认没有激活。

'django.core.context_processors.request',