Форум сайта python.su
Не получается достать объект юзера. Пытаюсь это сделать из generic view.
from django.conf.urls.defaults import *
from djangobook.site.models import Work
test_info = {
‘queryset’: Work.objects.all(),
‘allow_empty’: True,
‘extra_context’: {'user': request.user},
‘template_name’: ‘test.html’,
}
urlpatterns = patterns('django.views.generic',
(r'^$', ‘list_detail.object_list’, test_info),
)
Сервер мне отвечает вот такой ошибкой
name ‘request’ is not defined
Почему такое происходит и как решить эту проблему?
Офлайн
offlineПри объявлении test_info объекта request не существует, согласись. поэтому и ошибка.
Почему такое происходит и как решить
offlineиспользовать http://www.djangoproject.com/documentation/templates_python/#django-core-context-processors-auth
как решить эту проблему?
Офлайн
Daevaorn, а как тогда request появляется в обычных views. Например я использую его для получения данных с формы
title = request.POST
Вроде ведь тоже, ничего такого не импортирую чего нет в generic views..
Насчёт того способа который ты подсказал. Как я понял там надо в settings.py добавить строчку
TEMPLATE_CONTEXT_PROCESSORS = (“django.core.context_processors.auth”,)
а потом в generic view добавить строчку
'context_processors': ‘django.core.context_processors.auth’,
Но теперь сервер жалуется так:
'str' object is not callable
Офлайн
Упс, насчёт request понял.. А вот с context_processors ещё нет
Офлайн
offlineну ты как бы сам и ответил:). request попадает во вью в качестве параметра(первого), а ты его хочешь использовать далеко не во вью, а в urlconf при объявлении test_info, где его нет и не было.
а как тогда request появляется в обычных views. Например я использую его для получения данных с формы
offlineнадо TEMPLATE_CONTEXT_PROCESSORS добавить еще один процессор “django.core.context_processors.auth”. Там уже по умолчанию несколько есть.
Как я понял там надо в settings.py добавить строчку
TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media")
Офлайн
Daevaorn
Спасибо. Помогло! Правда вот по умолчанию у меня вообще TEMPLATE_CONTEXT_PROCESSORS в settings.py не было.
Офлайн
offlineЭто “умолчание” внутри django есть
Правда вот по умолчанию у меня вообще TEMPLATE_CONTEXT_PROCESSORS в settings.py не было.
Офлайн
Угу, нашёл теперь. Далеко запрятали..
Офлайн