2012-12-04 9 views
28

Qual è il modo migliore per ottenere informazioni utente da un modello django?Ottieni informazioni utente in django templates

Per esempio, se voglio solo:

  1. Se l'utente è connesso, il display "Benvenuti [username]"
  2. In caso contrario, visualizzare il pulsante di accesso.

sto usando django-registrazione/autenticazione

+0

Eventuali duplicati di [? Come accedere al profilo utente in un modello di Django] (http://stackoverflow.com/questions/422140/how-to-access-the-user -profile-in-a-django-modello) –

risposta

38

Un metodo alternativo per la corrente Django Versioni:

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


Nota:

  • Usa request.user.get_username() nelle viste & user.get_username nei template. È preferibile fare riferimento direttamente all'attributo username. Source
  • Questa variabile di contesto del modello è disponibile se viene utilizzato un RequestContext.
  • django.contrib.auth.context_processors.auth è abilitata di default & contiene l'utente variabile
  • NON è necessario attivare django.core.context_processors.request processore contesto modello.

Fonte: 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 %} 

e assicurarsi di avere il processore contesto request modello installato nel vostro settings.py:

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