#django #django-templates #django-views
#django #django-templates #django-views
Вопрос:
Если некоторые запросы шаблона из общих представлений, которые я могу получить {{ user }}
, и это будет объект аутентифицированного пользователя (например, меня).
Но если я работаю без общих представлений, с обычными представлениями {{ user }}
не возвращает мой объект.
Почему???
Спасибо.
Ответ №1:
Потому что вы не включили его в контекст визуализации вашего шаблона.
Вам нужно использовать что-то вроде:
def my_view(request, …):
…
return render_to_response("my_template.html", {
…,
"user": request.user,
})
Комментарии:
1. Нет проблем. Если вы хотите, можете сделать
user
доступным автоматически с помощью контекстного процессора (см. docs.djangoproject.com/en/dev/ref/templates/api ).2. Я читал эти документы, но не видел, как сделать ‘user’ автоматически доступным в шаблонах. Знаете ли вы какой-нибудь короткий способ? Заранее спасибо!!!
3. @VitaliPonomar возможно, вы уже поняли это, но я все еще спрашиваю,
'django.contrib.auth.context_processors.auth'
в своемTEMPLATE_CONTEXT_PROCESSORS
4. {{ user }} по-прежнему недоступен после добавления контекстного процессора, если вы используете
render_to_response
. обязательно ознакомьтесь с ответом Catavaran, чтобы решить эту проблему
Ответ №2:
Если вы используете render_to_response()
, то вам нужно добавить третий параметр с экземпляром RequestContext:
return render_to_response('my_template.html',
{'my_data', my_data},
context_instance=RequestContext(request))
Подробнее на https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#django.shortcuts.render_to_response