2015-03-27 3 views
4

Я немного ошеломлен здесь, надеюсь, кто-то там понимает эту проблему!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>}] 

Поскольку новый объект контекста не имеет ключа «запрос», несколько templatetags не работают, например. Джанго-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

Что вы имеете в 'настройки TEMPLATE_CONTEXT_PROCESSORS'? – alecxe

+0

@alecxe благодарим за ответ. Я приложил контекстные процессоры к вопросу :) – RadiantHex

ответ

2

Как подсказывает Алекс, вам нужно добавить обработчик контекста request; он не активируется по умолчанию.

'django.core.context_processors.request', 
+0

haha ​​hey thanks Daniel! Поймайте вас в Лондоне – RadiantHex

+2

Для> = 1.8 вместо этого добавьте 'django.template.context_processors.request'. – matuuar

4

Для 1.8, добавьте

'django.template.context_processors.request', 

вместо

'django.core.context_processors.request',