2012-12-04 43 views
28

Jaki jest najlepszy sposób uzyskania informacji o użytkowniku z szablonu django?Uzyskaj informacje o użytkowniku w szablonach django

Na przykład, jeśli tylko chcesz:

  1. Jeśli użytkownik jest zalogowany, wyświetlacz "Welcome [nazwa_użytkownika]"
  2. W przeciwnym wypadku wyświetli przycisk logowania.

Używam django rejestracji/uwierzytelniania

+0

Możliwy duplikat [? Jak uzyskać dostęp do profilu użytkownika w szablonie Django] (http://stackoverflow.com/questions/422140/how-to-access-the-user -profile-in-a-django-template) –

Odpowiedz

38

alternatywną metodą dla bieżącej Django wersje:

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


Uwaga:

  • Zastosowanie request.user.get_username() w widokach & user.get_username w szablonach. Preferowany bezpośrednio przez odniesienie do atrybutu username. Source
  • Ta zmienna kontekstowa szablonu jest dostępna, jeśli użyto RequestContext.
  • django.contrib.auth.context_processors.auth jest domyślnie włączona & zawiera zmienna użytkownikowi
  • NIE musisz włączyć django.core.context_processors.request procesor kontekstowego szablonu.

Źródło: https://docs.djangoproject.com/en/dev/topics/auth/default/#authentication-data-in-templates

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

i upewnij się, że masz procesor kontekstowe request szablonu zainstalowanej w settings.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'django.core.context_processors.request', 
    ... 
) 
Powiązane problemy