Django 1.8 - KeyError 'request'
Asked Answered
G

2

7

I'm a bit dumbfounded here, hopefully someone out there understands this issue!

This is the context:

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

The request object looks pretty normal

'<WSGIRequest\npath:/accounts/login/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{\'_ga\': \'GA1.1.908939259.1424705622\',\n \'csrftoken\': \'Ga0urMmd7AgBouS9KeH5V4EQNoyE8cqU\',\n [...]

But when the following line is read:

context = make_context(context, request)

The output context is as follows

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

As the new context object has no 'request' key, a few templatetags fail e.g. django-allauth


Here is an example of were it fails:

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


My 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",
            ],
        },
    },
]

Has anyone seen this before?

Gayden answered 27/3, 2015 at 12:37 Comment(2)
What do you have in TEMPLATE_CONTEXT_PROCESSORS setting?Northway
@Northway thank for the reply. I've appanded the context processors to the question :)Gayden
G
4

As Alex hints, you need to add the request context processor; it's not activated by default.

'django.core.context_processors.request',
Galimatias answered 27/3, 2015 at 12:45 Comment(1)
For >=1.8 add 'django.template.context_processors.request' instead.Inkblot
L
5

For 1.8, add

'django.template.context_processors.request',

instead of

'django.core.context_processors.request',
Litta answered 19/6, 2015 at 4:57 Comment(0)
G
4

As Alex hints, you need to add the request context processor; it's not activated by default.

'django.core.context_processors.request',
Galimatias answered 27/3, 2015 at 12:45 Comment(1)
For >=1.8 add 'django.template.context_processors.request' instead.Inkblot

© 2022 - 2024 — McMap. All rights reserved.