Подтвердить что ты не робот

Как получить текущего пользователя в теге шаблона?

Как я могу получить текущего пользователя в тегах шаблона django? (объект запроса недоступен) Или как я могу получить доступ к объекту запроса?

4b9b3361

Ответ 1

Если вы хотите получить доступ к текущему пользователю в теге шаблона, вы должны передать его как параметр в шаблонах, например:

{% my_template_tag user %}

Затем убедитесь, что ваш тег шаблона принимает этот дополнительный параметр. Ознакомьтесь с документацией по этой теме. Вы также должны проверить простые теги.

Ответ 2

Пользователь всегда привязан к запросу, в ваших шаблонах вы можете сделать следующее:

{% if user.is_authenticated %}
{% endif %}

Вам не нужно указывать "запрос" для доступа к его контенту

UPDATE:

Знайте: is_authenticated() всегда возвращает True для зарегистрированных пользователей (User объектов), но возвращает False для AnonymousUser (гостевые пользователи). Читайте здесь: https://docs.djangoproject.com/en/1.7/ref/contrib/auth/

Ответ 3

Этот вопрос уже был ответил здесь:

{% ifuser.is_authenticated %}
    Welcome 
'{{ user.username }}'
    {% else %}
    <a href="{% url django.contrib.auth.login %}">Login</a>
{% endif %}

и убедитесь, что в ваших настройках установлен контекстный процессор шаблона запроса .py:

TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)

Примечание:

  • Используйте request.user.get_username() в представлениях и user.get_username в шаблоны. Предпочтительно напрямую ссылаться на атрибут имени пользователя. Источник
  • Эта контекстная переменная шаблона доступна, если используется RequestContext.
  • django.contrib.auth.context_processors.auth включен по умолчанию и содержит переменную user
  • Вам не нужно включать django.core.context_processors.request шаблонный контекстный процессор.

Источник: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates