2012-12-04 12 views
28

Wie kann man am besten Benutzerinformationen aus einer django-Vorlage erhalten?Benutzerinformationen in django templates erhalten

Zum Beispiel, wenn ich will nur:

  1. Wenn der Benutzer angemeldet ist, Anzeige "Welcome [Benutzername]"
  2. Ansonsten zeigt die Login-Button.

Ich bin mit django-Anmeldung/Authentifizierung

+0

Mögliches Duplikat [? Wie das Benutzerprofil in einer Django-Vorlage zuzugreifen] (http://stackoverflow.com/questions/422140/how-to-access-the-user -Profil-in-einem-Django-Template) –

Antwort

38

Ein alternatives Verfahren zur aktuellen Django Versionen:

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


Hinweis:

  • Verwenden request.user.get_username() in Ansichten & user.get_username in Vorlagen. Bevorzugt über referenziertes username Attribut direkt. Source
  • Diese Vorlagenkontextvariable ist verfügbar, wenn ein RequestContext verwendet wird.
  • django.contrib.auth.context_processors.auth standardmäßig aktiviert ist & enthält die Variable Benutzer
  • Sie brauchen nicht django.core.context_processors.request Vorlage Kontextprozessor zu ermöglichen.

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

und stellen Sie sicher, dass Sie die request Vorlage Kontext-Prozessor in Ihrem settings.py installiert haben:

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