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

Получить информацию о пользователе в шаблонах django

Какой лучший способ получить информацию пользователя из шаблона django?

Например, если я просто хочу:

  • Если пользователь вошел в систему, отобразите "Добро пожаловать [имя пользователя]"
  • В противном случае отобразите кнопку входа в систему.

Я использую django-registration/authentication

4b9b3361

Ответ 1

Альтернативный метод для текущих версий Django:

{% if user.is_authenticated %}
    <p>Welcome, {{ user.get_username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}


Примечание:

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

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

Ответ 2

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

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

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