Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 13, 2007 11:26:42

offline
От:
Зарегистрирован: 2007-04-24
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

request.user

Не получается достать объект юзера. Пытаюсь это сделать из 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

Почему такое происходит и как решить эту проблему?



Офлайн

#2 Сен. 13, 2007 11:32:36

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

request.user

offline
Почему такое происходит и как решить
При объявлении test_info объекта request не существует, согласись. поэтому и ошибка.
offline
как решить эту проблему?
использовать http://www.djangoproject.com/documentation/templates_python/#django-core-context-processors-auth



Офлайн

#3 Сен. 13, 2007 12:01:56

offline
От:
Зарегистрирован: 2007-04-24
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

request.user

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



Офлайн

#4 Сен. 13, 2007 12:14:03

offline
От:
Зарегистрирован: 2007-04-24
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

request.user

Упс, насчёт request понял.. А вот с context_processors ещё нет



Офлайн

#5 Сен. 13, 2007 12:16:30

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

request.user

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")
Больше ничего делать не нужно.



Офлайн

#6 Сен. 13, 2007 12:21:33

offline
От:
Зарегистрирован: 2007-04-24
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

request.user

Daevaorn
Спасибо. Помогло! Правда вот по умолчанию у меня вообще TEMPLATE_CONTEXT_PROCESSORS в settings.py не было.



Офлайн

#7 Сен. 13, 2007 12:27:34

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

request.user

offline
Правда вот по умолчанию у меня вообще TEMPLATE_CONTEXT_PROCESSORS в settings.py не было.
Это “умолчание” внутри django есть



Офлайн

#8 Сен. 13, 2007 12:30:17

offline
От:
Зарегистрирован: 2007-04-24
Сообщения: 121
Репутация: +  0  -
Профиль   Отправить e-mail  

request.user

Угу, нашёл теперь. Далеко запрятали..



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version