Django {{ user }} не возвращает объект пользователя в шаблонах без общих представлений

#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