Как получить текущего пользователя в теге шаблона?
Как я могу получить текущего пользователя в тегах шаблона django? (объект запроса недоступен)
Или как я могу получить доступ к объекту запроса?
Ответы
Ответ 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