Найти - Пользователи
Полная версия: request.user
Начало » Django » request.user
1
offline
Не получается достать объект юзера. Пытаюсь это сделать из 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
offline
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
offline
Упс, насчёт request понял.. А вот с context_processors ещё нет
Александр Кошелев
offline
а как тогда request появляется в обычных views. Например я использую его для получения данных с формы
ну ты как бы сам и ответил:). request попадает во вью в качестве параметра(первого), а ты его хочешь использовать далеко не во вью, а в urlconf при объявлении test_info, где его нет и не было.
offline
Как я понял там надо в settings.py добавить строчку
надо TEMPLATE_CONTEXT_PROCESSORS добавить еще один процессор “django.core.context_processors.auth”. Там уже по умолчанию несколько есть.
TEMPLATE_CONTEXT_PROCESSORS = ("django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media")
Больше ничего делать не нужно.
offline
Daevaorn
Спасибо. Помогло! Правда вот по умолчанию у меня вообще TEMPLATE_CONTEXT_PROCESSORS в settings.py не было.
Александр Кошелев
offline
Правда вот по умолчанию у меня вообще TEMPLATE_CONTEXT_PROCESSORS в settings.py не было.
Это “умолчание” внутри django есть
offline
Угу, нашёл теперь. Далеко запрятали..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB